C#TreeView 無(wú)限級(jí)別分類(lèi)實(shí)現(xiàn)方法
做分類(lèi) 經(jīng)常會(huì)用到無(wú)限級(jí)別的分類(lèi) 先介紹一下數(shù)據(jù)庫(kù)的表結(jié)構(gòu)

tid 類(lèi)別編號(hào)
tname 類(lèi)別名稱(chēng)
pid 父類(lèi)編號(hào)
測(cè)試數(shù)據(jù)就不寫(xiě)了,大家可以自己插入一下試試
查詢(xún)制定類(lèi)別的 所有的子類(lèi) 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
查詢(xún)之后獲取記錄集 綁定到前臺(tái)的 TreeView 上面
/// <summary>
/// 給Tree 綁定數(shù)據(jù) 遞歸添加子節(jié)點(diǎn)
/// </summary>
/// <param name="dv">數(shù)據(jù)視圖</param>
/// <param name="tnOld">添加數(shù)據(jù)的節(jié)點(diǎn)</param>
public void TreeDataBind(DataView dv,TreeNode tnOld)
{
TreeNode tnNew; //創(chuàng)建一個(gè)新的節(jié)點(diǎn)
foreach (DataRowView drv in dv)
{
//為新的借點(diǎn)設(shè)置屬性
tnNew = tnOld.Nodes.Add(drv["tname"].ToString());
tnNew.Tag = drv["tid"];
//過(guò)濾數(shù)據(jù)視圖 父類(lèi)id = 上一級(jí)的tid
dv.RowFilter = "pid=" + drv["tid"].ToString();
//自己調(diào)用自己
TreeDataBind(dv, tnNew);
}
}
調(diào)用的方法很簡(jiǎn)單
DataTable dtRet = (DataTable)dh.ExecProcRetObj(ep);
DataView dv = new DataView(dtRet);
dv.RowFilter = "pid=0";
TreeDataBind(dv, this.treeView1.Nodes.Add("商品類(lèi)別"));
效果
- C# TreeView控件使用代碼
- C# TreeView讀取數(shù)據(jù)庫(kù)簡(jiǎn)單實(shí)例
- c# TreeView添加右鍵快鍵菜單有兩種方法
- js獲取Treeview選中的節(jié)點(diǎn)(C#選中CheckBox項(xiàng))
- c#的treeview綁定和獲取值的方法
- C#實(shí)現(xiàn)treeview綁定的方法
- C#自定義DataGridViewColumn顯示TreeView
- C#實(shí)現(xiàn)TreeView節(jié)點(diǎn)拖拽的方法
- C#中TreeView實(shí)現(xiàn)適合兩級(jí)節(jié)點(diǎn)的選中節(jié)點(diǎn)方法
- C#搜索TreeView子節(jié)點(diǎn),保留父節(jié)點(diǎn)的方法
- C# TreeView無(wú)限目錄樹(shù)實(shí)現(xiàn)方法
相關(guān)文章
C#中LINQ的Select與SelectMany函數(shù)使用
這篇文章主要介紹了C#中LINQ的Select與SelectMany函數(shù)使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
關(guān)于Unity C# Mathf.Abs()取絕對(duì)值性能測(cè)試詳解
這篇文章主要給大家介紹了關(guān)于Unity C# Mathf.Abs()取絕對(duì)值性能測(cè)試的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Unity C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
C#畫(huà)筆使用復(fù)合數(shù)組繪制單個(gè)矩形的方法
這篇文章主要介紹了C#畫(huà)筆使用復(fù)合數(shù)組繪制單個(gè)矩形的方法,涉及C#使用畫(huà)筆繪制圖形的相關(guān)技巧,需要的朋友可以參考下2015-06-06
WPF實(shí)現(xiàn)自定義Panel面板的示例詳解
WPF中的Panel(面板),是繼承自FrameworkElement的抽象類(lèi),表示一個(gè)可以用來(lái)排列子元素的面板,本文主要來(lái)和大家聊聊WPF如何實(shí)現(xiàn)自定義Panel,感興趣的可以了解下2023-09-09
C#學(xué)習(xí)教程之Socket的簡(jiǎn)單使用
這篇文章主要給大家介紹了關(guān)于C#學(xué)習(xí)教程之Socket的簡(jiǎn)單使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
基于WPF手寫(xiě)一個(gè)簡(jiǎn)單的消息對(duì)話(huà)框
消息對(duì)話(huà)框是UI界面中不可或缺的組成部分,用于給用戶(hù)一些提示,警告或者詢(xún)問(wèn)的窗口,本文將使用WPF手寫(xiě)一個(gè)簡(jiǎn)單的消息對(duì)話(huà)框,感興趣的小伙伴可以了解下2023-12-12

