zoukankan      html  css  js  c++  java
  • Asp.net 2.0 Treeview 动态填充,并实现无限级树

    Asp.net 2.0 Treeview 动态填充,并实现无限级树,
    数据库表关键字段:
    表: table1
     
    type_id  type_name   per_type_id
       
    0        根目录               -1
       
    1        子目录                0
       
    2        子目录2             0
       
    3        子子目录              2
       .
       
    9        根目录二             -1

     C#代码
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;



    public partial class tree : System.Web.UI.Page
    {
      
        
    protected void Page_Load(object sender, EventArgs e)
        
    {

            TreeView1.Nodes.Clear();

            DataTable dt 
    = tree_table();                  
            DataView dv 
    = new DataView(dt);
            dv.RowFilter 
    = "type_id = 0";

            
    foreach (DataRowView drv in dv)
            
    {
                TreeNode node 
    = new TreeNode();
                node.Text 
    = drv["type_name"].ToString();
                node.Value 
    = drv["type_id"].ToString();
                node.NavigateUrl 
    = "?s=" + drv["type_id"].ToString();
                TreeView1.Nodes.Add(node);
                AddChildNode(dt, node);
            }

           
            
        }


        
    private DataTable tree_table()
        
    {
           
            
    //hooyesDataLink 为配置中数据连接字符串键名
            SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["hooyesDataLink"]);
            SqlDataAdapter sda 
    = new SqlDataAdapter("select * from table1", con);
            DataTable dt 
    = new DataTable();
            sda.Fill(dt);
            
    return dt;
        }


        
    #region 递归以实现无限级树 
        
    private void AddChildNode(DataTable dt, TreeNode node)
        
    {
            DataView dv 
    = new DataView(dt);//建立dt的表视图
            dv.RowFilter = "per_type_id = '" + node.Value + "'"//过滤
            foreach (DataRowView drv1 in dv)
            
    {
                TreeNode ChildNode 
    = new TreeNode(); 
                ChildNode.Text 
    = drv1["type_name"].ToString();
                ChildNode.Value 
    = drv1["type_id"].ToString();
                ChildNode.NavigateUrl 
    = "?s=" + drv1["type_id"].ToString();
                ChildNode.Expanded 
    = true;//展开属性为FALSE

                node.ChildNodes.Add(ChildNode);


                AddChildNode(dt, ChildNode);
            }

        }

        
    #endregion



    }


    效果:

    Feedback

  • 相关阅读:
    XML之四种解析dom,sax,jdom,dom4j原理及性能比较
    uni-app 下小程序bindgetuserinfo不回调原因
    微信小程序 -- 真机不打开调试无法正常使用小程序的坑
    如何申请腾讯位置服务的密钥
    使用Promise封装小程序wx.request的实现方法
    关于vue-router当中addRoutes的使用
    前端Promise总结笔记
    css怎么设置超出几行显示省略号?
    大数据Spark和Hadoop以及区别(干货)
    Spark和Hadoop的区别和比较
  • 原文地址:https://www.cnblogs.com/yongheng178/p/1284256.html
Copyright © 2011-2022 走看看