当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,