TreeView中如何实现展开节点时才会生成子节点?
因为数据库中数据量比较大,一次生成全部节点时系统反应会很慢,想要实现单击某个节点时可以动态生成子节点。请各们专家帮帮忙。代码如下:我是新手,不知道怎么给分,先谢谢了。public partial class UnitTree_TestTree : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DB db = new DB();
int fitemid = 0;
SqlConnection CN = db.GetCon();
DataTable roottable = new DataTable();
try
{
CN.Open();
SqlDataAdapter adp = new SqlDataAdapter("select * from sys_item where left(ffullnumber,2)='22' and fitemclassid='2'", CN);
DataSet ds = new DataSet();
adp.Fill(ds);
this.ViewState["ds"] = ds;
roottable = ds.Tables[0];
this.TextBox1.Text = ds.Tables[0].Rows[0]["fitemid"].ToString();
}
catch (Exception ex)
{
Session["Error"] = ex.ToString();
Response.Redirect("error.aspx"); //?跳转程序的公共错误处理页面
}
finally
{
CN.Close();
}
for (int i=0;i<roottable.Rows.Count;i++)
{
if (roottable.Rows[i]["flevel"].ToString() == "2")
{
fitemid = Int32.Parse(roottable.Rows[i]["fparentid"].ToString());
AddTree(fitemid, (TreeNode)null);//调用递归函数,完成树形结构的生成
}
}
}
public void AddTree(int ParentID, TreeNode pNode)
{
DataSet ds = (DataSet)this.ViewState["ds"];
DataView dvTree = new DataView(ds.Tables[0]);
//过滤ParentID,得到当前的所有子节点
dvTree.RowFilter = "[fPARENTID] = " + ParentID;
foreach (DataRowView Row in dvTree)
{
TreeNode Node = new TreeNode();
if (pNode == null)
{ //添加根节点
Node.Text = Row["fname"].ToString();
TreeView1.Nodes.Add(Node);
Node.Expanded = true;
AddTree(Int32.Parse(Row["fitemid"].ToString()), Node); //再次递归
}
else
{ //添加当前节点的子节点
Node.Text = Row["fname"].ToString();
pNode.ChildNodes.Add(Node);
pNode.Expanded = false;
AddTree(Int32.Parse(Row["fitemid"].ToString()), Node); //再次递归
}
}
}
} --------------------编程问答-------------------- 求人不如求已,自己搞定了。但是还有个问题,如何才能做到让没有子节点的节点前面不显示加号?处理中,自己结贴吧!
补充:.NET技术 , C#