程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C#TreeView 無限級別分類實現方法

C#TreeView 無限級別分類實現方法

編輯:C#基礎知識

做分類 經常會用到無限級別的分類  先介紹一下數據庫的表結構

tid  類別編號

tname 類別名稱

pid 父類編號

測試數據就不寫了,大家可以自己插入一下試試

查詢制定類別的 所有的子類   sql 的 代碼

代碼如下:

alter proc  proc_chaxun
(@tid int )
as
begin 

   
    with tt  as
    (

        select tid,tname,pid from dbo.t_goodsType where tid=@tid
        union all
        select t.tid,t.tname,t.pid from dbo.t_goodsType  t inner join tt
        on t.pid=tt.tid
    )
    select * from tt
end

查詢之後獲取記錄集   綁定到前台的 TreeView 上面

代碼如下:

 /// <summary>
            /// 給Tree 綁定數據 遞歸添加子節點
            /// </summary>
            /// <param name="dv">數據視圖</param>
            /// <param name="tnOld">添加數據的節點</param>
            public void TreeDataBind(DataView dv,TreeNode tnOld)
            {
                TreeNode tnNew;    //創建一個新的節點
                foreach (DataRowView drv in dv)
                {
                    //為新的借點設置屬性
                    tnNew = tnOld.Nodes.Add(drv["tname"].ToString());
                    tnNew.Tag = drv["tid"];
                    //過濾數據視圖 父類id = 上一級的tid
                    dv.RowFilter = "pid=" + drv["tid"].ToString();
                    //自己調用自己
                    TreeDataBind(dv, tnNew);
                }
            }

調用的方法很簡單

代碼如下:

DataTable dtRet = (DataTable)dh.ExecProcRetObj(ep);
DataView dv = new DataView(dtRet);
 dv.RowFilter = "pid=0";
TreeDataBind(dv, this.treeView1.Nodes.Add("商品類別"));

效果

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved