2023年6月22日发(作者:)
treeview添加新节点的代码:
//Initial TreeView
//pdate();
//();
//("Parent");
//[0].("Child 1");
//[0].("Child 2");
//[0].Nodes[1].("Grandchild");
//[0].Nodes[1].Nodes[0].("Great Grandchild");
//ate();
核心思想,用dataAdapter进行数据查询,将查询结果赋值给DataSet中的一个DataTable,然后用DataTableReader来读取DataTable,再利用DataRow[]数组,将DataTableReader读取的信息存入数组,其中数组长度可以由属性来确定,数组赋值(DataRow[],0),通过这条命令,已经将DataReader读取的DataTable中的数据存入DataRow[]中了。需要注意的是DataRows存储的数据类型是object,所以最好调试的时候加入断点来判断自己所需数据的位置。
如array[0].ItemArray[0].ToString(),就是将Rows数组中第一个元素所包含的ItemArray成员的第一个元素转化成了字符串类型。
将根节点,第二级节点和叶子节点分别用上述方法表示,再利用嵌套for循环就可以完成treeview中添加三层结构的需求。
pdate();
();
for (int i = 0; i < ; i++)
{
(arry[i].ItemArray[1].ToString() );//+ "(" + arry[i].ItemArray[1].ToString()+")");
[i].Tag = ng();
GradeID = arry[i].ItemArray[0].ToString();
string str_class = "select * from classes where classgrade=" + GradeID;
OleDbDataAdapter da_class = new OleDbDataAdapter(str_class, conn);
DataSet ds_class = new DataSet();
da_(ds_class, "treeNodesCh");
DataTable dt_class = ds_["treeNodesCh"];
DataTableReader dr_class = new DataTableReader(dt_class);//ds_class["treeNodesCh"];
DataRow[] arry_class = new DataRow[dt_];
dt_(arry_class, 0);
for (int j = 0; j < dt_; j++)
{
[i].(arry_class[j].ItemArray[1].ToString());
[i].Nodes[j].Tag = ng() + ng();
ClassID = arry_class[j].ItemArray[0].ToString(); string str_student = "select * from students where classID =" + ClassID;
OleDbDataAdapter da_stu = new OleDbDataAdapter(str_student, conn);
DataSet ds_stu = new DataSet();
da_(ds_stu, "treeNodesChCh");
DataTable dt_stu = ds_["treeNodesChCh"];
DataTableReader dr_stu = new DataTableReader(dt_stu);//ds_class["treeNodesCh"];
DataRow[] arry_stu = new DataRow[dt_];
dt_(arry_stu, 0);
for (int k = 0; k < dt_; k++)
{
[i].Nodes[j].(arry_stu[k].ItemArray[1].ToString());
[i].Nodes[j].Nodes[k].Tag = ng() + ng() + ng();
}
}
}
ate();
对于鼠标双击事件,这个有点小技巧,我用的是treeview的MouseDown事件,如何判断根节点,次一级节点和叶子节点,其实上面的代码已经有了:
[i].Nodes[j].Tag = ng() + ng();这个就是第二集节点。
[i].Nodes[j].Nodes[k].Tag = ng() + ng() + ng();这个是叶子。
在MouseDown事件中判断叶子节点是否被选中,只需要判断ng().Length的长度是否是3,如果是就是叶子节点,如果不是,就是根或者次一级节点,
private void treeView1_MouseDown(object sender, MouseEventArgs e)
{
if ( ==null)
="fuck";
//edNode.
else if (ng().Length >= 3)
{
= null;
edNode = null;
btnClic sh = new btnClic();
();
}
}
发布者:admin,转转请注明出处:http://www.yc00.com/news/1687385032a6101.html
评论列表(0条)