1,WINFORM的程序,我的treeview是直接从数据库获取,里面许多节点以及好多子节点,如果在窗体一开始就载入需要耗费一定的时间,我现在想窗体加载的时候只加载前面两层,然后每点击一个节点的时候就加载这个节点的子节点。试问怎么实现?2,还有一个问题是,大家都知道treeview默认的是如果这个节点有子节点的话,那么该节点就会有一个+号,如果按照第一个问题窗体只加载到前面2层,当我点击第二层节点的时候即使该节点还有子节点可能也无法显示+号(因为代码还未去检索该节点是否有无子节点),有什么好的方案可以解决这问题吗?30分送上,虽不多,但是找了许多资料都没有要到满意的答案,谢谢指点!
但是我写这个好使 就是你说的那样 参考下吧 private void nodes(TreeNodeCollection tnode, DataTable dt, int id)
{
DataView dv = new DataView(dt);
dv.RowFilter = "[ParentAreaID]=" + id + "";
foreach (DataRowView row in dv)
{
TreeNode node = new TreeNode();
node.Text = row["AreaName"].ToString();
tnode.Add(node);
nodes(node.Nodes, dt, Int32.Parse(row["AreaID"].ToString()));
}
}private void FormAreaType_Load(object sender, EventArgs e)
{
DataTable dt = objDB.get_DataTable("select * from Kxd_AreaType");
nodes(this.treeView1.Nodes, dt, 0);
button1.Select();
}
展开本节点的时候,为本节点的所有Nodes获取子节点foreach(TreeNode node in e.Node.Nodes)
{
//为Node添加子节点
}
2 点击第二层节点的时候即使该节点还有子节点可能也无法显示+号,原因就是你没把子节点加入到treeview。你在点击的事件中加入代码,从数据库判断该节点下是否有子节点,如果有则把子节点加入到该节点下,刷新,就会出现+号了。