ASP.NET 递归将分类绑定到 TreeView

来源:互联网 发布:网络防火墙软件 编辑:程序博客网 时间:2024/04/29 20:48

namespace TreeView
{
    public partial class _default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                bindTree();
            }
        }
        private void bindTree()
        {
            DataTable dt = this.GetTreeData();
            this.FillNode(dt, null);
        }
        private void FillNode(DataTable dt, TreeNode node)
        {
            DataView dv = new DataView(dt);
            if (node == null)//根节点
            {
                dv.RowFilter = "parentid='0'";//筛选到根节点的所有子节点
            }
            else//不是根节点
            {
                dv.RowFilter = "parentid='" + node.Value + "'";//筛选对应节点的所有子节点
            }
            foreach (DataRowView drv in dv)
            {
                TreeNode no = new TreeNode(drv["menuname"].ToString(), drv["menuid"].ToString());
                FillNode(dt, no);
                if (node == null)
                {
                    this.TreeView1.Nodes.Add(no);
                }
                else
                {
                    node.ChildNodes.Add(no);
                }
            }
        }
        private DataTable GetTreeData()
        {
            string strcnn = ConfigurationManager.ConnectionStrings["treecnn"].ConnectionString;
            using (SqlConnection sqlcnn=new SqlConnection(strcnn))
            {
                SqlCommand sqlcmm = sqlcnn.CreateCommand();
                sqlcmm.CommandText = "select * from MenuTree order by parentid,menuorder";
                SqlDataAdapter da = new SqlDataAdapter(sqlcmm);
                DataSet ds = new DataSet();
                da.Fill(ds);
                return ds.Tables[0];
            }
        }        
    }
   
}

原创粉丝点击