最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#?DataSet結(jié)合FlyTreeView實(shí)現(xiàn)顯示樹(shù)狀模型數(shù)據(jù)

 更新時(shí)間:2024年04月23日 14:53:16   作者:初九之潛龍勿用  
NineRays.WebControls.FlyTreeView?是?9rays.net?推出的一款功能強(qiáng)大的樹(shù)狀模型數(shù)據(jù)顯示控件,本文主要介紹了如何使用其并結(jié)合?DataSet對(duì)象進(jìn)行數(shù)據(jù)顯示,感興趣的可以了解下

關(guān)于 FlyTreeView

NineRays.WebControls.FlyTreeView 是 9rays.net 推出的一款功能強(qiáng)大的樹(shù)狀模型數(shù)據(jù)顯示控件,本文將介紹使用其 Asp.net 版本控件,并結(jié)合 DataSet 對(duì)象進(jìn)行數(shù)據(jù)顯示。

顯示效果如下圖:

DataSet 數(shù)據(jù)準(zhǔn)備

我們?cè)?MS SQL Server 創(chuàng)建 groupUsers(群組用戶表),其結(jié)構(gòu)如下表:

序號(hào)字段名類型說(shuō)明
1ciduniqueidentifier唯一標(biāo)識(shí)
2Group_Ciduniqueidentifier所屬群組ID標(biāo)識(shí)(引用群組表groups)
3Account_Ciduniqueidentifier人員帳戶ID(引用用戶表Accounts,用于顯示昵稱、姓名等)
4parent_Ciduniqueidentifier父結(jié)點(diǎn)ID,所屬管理者ID
5sortcodeint同級(jí)排序號(hào)
6sys_insusernvarchar(100)創(chuàng)建者用戶名
7sys_instimedatetime創(chuàng)建時(shí)間
8sys_updusernvarchar(100) 最后修改者用戶名
9sys_updtimedatetime最后修改時(shí)間

該表所涉及的引用表這里不在贅述,我們假設(shè)有如下 SQL 語(yǔ)句:

select a.cid,a.parent_cid,nickname+'('+name+')' truename
from groupUsers a,accounts b 
where a.group_cid=@group_cid 
and a.account_cid=b.cid

我們需要重點(diǎn)得到 cid(唯一標(biāo)識(shí))、parent_cid(父節(jié)點(diǎn)ID) 和 truename (顯示名稱) 三個(gè)字段。查詢并寫入到 DataSet 中。

涉及表結(jié)構(gòu)創(chuàng)建腳本

群組用戶表

SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
CREATE TABLE [dbo].[groupUsers](
    [cid] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
    [Group_Cid] [uniqueidentifier] NOT NULL,
    [Account_Cid] [uniqueidentifier] NOT NULL,
    [parent_Cid] [uniqueidentifier] NULL,
    [sortcode] [int] NULL,
    [sys_insuser] [nvarchar](100) NULL,
    [sys_instime] [datetime] NULL,
    [sys_upduser] [nvarchar](100) NULL,
    [sys_updtime] [datetime] NULL,
 CONSTRAINT [PK_groupUsers] PRIMARY KEY CLUSTERED 
(
    [cid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
 CONSTRAINT [IX_cc_groupUsers] UNIQUE NONCLUSTERED 
(
    [Group_Cid] ASC,
    [parent_Cid] ASC,
    [Account_Cid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
 
ALTER TABLE [dbo].[groupUsers] ADD  CONSTRAINT [DF_groupUsers_cid]  DEFAULT (newid()) FOR [cid]
GO

用戶表

SET ANSI_NULLS ON
GO
 
SET QUOTED_IDENTIFIER ON
GO
 
CREATE TABLE [dbo].[accounts](
    [cid] [uniqueidentifier] ROWGUIDCOL  NOT NULL,
    [name] [nvarchar](50) NULL,
    [nickname] [nvarchar](500) NULL
 
)GO
 
ALTER TABLE [dbo].[accounts] ADD  CONSTRAINT [DF_accounts_cid]  DEFAULT (newid()) FOR [cid]
GO

范例運(yùn)行環(huán)境

操作系統(tǒng): Windows Server 2019 DataCenter

數(shù)據(jù)庫(kù):Microsoft SQL Server 2016

.net版本: .netFramework4.0 或以上

開(kāi)發(fā)工具:VS2019  C#

方法設(shè)計(jì)

simpletreeview方法返回結(jié)點(diǎn)總數(shù),其參數(shù)說(shuō)明見(jiàn)下表:

序號(hào)參數(shù)名類型說(shuō)明
1tvFlyTreeNodeCollection傳入的FlyTreeView的當(dāng)前結(jié)點(diǎn)集合對(duì)象
2dsDataSet數(shù)據(jù)集對(duì)象,默認(rèn)只取Tables[0]
3keystring數(shù)據(jù)表的唯一標(biāo)識(shí)字段名
4parentkeystring數(shù)據(jù)表的父結(jié)點(diǎn)字段名
5disstring數(shù)據(jù)表的顯示名稱字段名
6keytypestring標(biāo)識(shí)類型,這是我們自定的規(guī)范,比如CID(字符)、ID(數(shù)值)固定名稱的處理方式,默認(rèn)處理方式對(duì)key或parentKey進(jìn)行字符串過(guò)濾處理
7initvaluestring是否指定一個(gè)初始值
8firstlevelbool是否指遍歷一級(jí),如果為true,則不在進(jìn)行遞歸
9initByKeybool初始值使用哪個(gè)關(guān)鍵字段,false使用父節(jié)點(diǎn),true使用唯一標(biāo)識(shí),默認(rèn)為false

代碼實(shí)現(xiàn)

方法代碼

int simpletreeview(fwebcontrols.FlyTreeNodeCollection tv, DataSet ds, string key, string parentkey, string dis, string keytype, string initvalue, bool firstlevel,bool initByKey)
{
                int rv = 0;
                DataView dv = new DataView();
                dv.Table = ds.Tables[0];
 
                fwebcontrols.FlyTreeNode tmpNd;
                switch (keytype)
                {
                    case "cid": dv.RowFilter = initvalue == "" ? " " + (initByKey == false ? parentkey : key) + " is null " : " " + (initByKey == false ? parentkey : key) + "='" + initvalue + "'"; break;
                    case "id": dv.RowFilter = initvalue == "" ? " " + (initByKey == false ? parentkey : key) + " is null " : "" + (initByKey == false ? parentkey : key) + "=" + initvalue + ""; break;
                    default: dv.RowFilter = "isnull(" + (initByKey == false ? parentkey : key) + ",'')='" + initvalue + "'"; break;
                }
                rv = dv.Count;
                foreach (DataRowView drv in dv)
                {
                    tmpNd = new fwebcontrols.FlyTreeNode();
                    tmpNd.Text = drv[dis].ToString();
                    tmpNd.Value = drv[key].ToString();
                    tv.Add(tmpNd);
                    if (!firstlevel)
                        simpletreeview(tmpNd.ChildNodes, ds, key, parentkey, dis, keytype, tmpNd.Value,firstlevel,false);
                }
                return rv;
}

調(diào)用示例

我們首先需要在頁(yè)面注冊(cè)控件,代碼如下:

<%@ Register Assembly="Microsoft.Web.UI.WebControls" Namespace="Microsoft.Web.UI.WebControls" TagPrefix="codn" %>

前端代碼如下:

<NineRays:FlyTreeView ID="userTree" ExpandLevel="4" Width="100%" CssClass="form-control" runat="server" Style="padding-top: 10px; padding-bottom: 10px; height: 400px;" CanBeSelected="true" BackColor="White"
                    PostBackOnSelect="False"
                    EnableTheming="True" ImageSet="Office2003" ImageSetCustomPath="/images/vista/"
                    ContentClickTogglesCheckbox="True" IsCheckbox="True">
                    <SelectedStyle BackColor="#BFCFFF" />
</NineRays:FlyTreeView>

后端調(diào)用代碼如下:

userTree.Nodes.Clear();
object ds=InitDataSet();
string initvalue="";
if(RowsCount==0) return 0;
 
simpletreeview(userTree.Nodes, (DataSet)ds, "cid", "parent_cid", "truename", "cid","", false, initvalue != "" ? true : false);
 
userTree.ContentClickCollapses = true;
userTree.ContentClickExpands = true;

小結(jié)

1、示例代碼中如何獲取 DataSet 數(shù)據(jù)需要我們自行進(jìn)行編寫代碼處理,這里只是抽象展示。

2、在 VS 中開(kāi)發(fā)我們需要在 IDE環(huán)境解決方案中添加此 dll,并引用,如下代碼:

3、提供一個(gè)后端輔助方法 getFlyTreeViewAllNodes,可以獲得FlyTreeView的所有結(jié)點(diǎn)信息,并放置到 ArrayList 中。

其參數(shù)說(shuō)明見(jiàn)下表:

序號(hào)參數(shù)名類型說(shuō)明
1tvFlyTreeNodeCollection要遍歷的TreeView集合
2rv2ArrayList要存儲(chǔ)的 ArrayList 變量

方法代碼如下:

public void getFlyTreeViewAllNodes(fwebcontrols.FlyTreeNodeCollection tv, ArrayList rv2)
{
     for (int i = 0; i < tv.Count; i++)
     {
         rv2.Add(tv[i].Value);
         getFlyTreeViewAllNodes(tv[i].ChildNodes, rv2);
     }
}

方法會(huì)在指定的 ArrayList 里存儲(chǔ) TreeView 的 Value 值 。

關(guān)于 NineRays.WebControls.FlyTreeView 更多操作這里不再做進(jìn)一步說(shuō)明,請(qǐng)參考其官網(wǎng)說(shuō)明。

到此這篇關(guān)于C# DataSet結(jié)合FlyTreeView實(shí)現(xiàn)顯示樹(shù)狀模型數(shù)據(jù)的文章就介紹到這了,更多相關(guān)C# DataSet顯示樹(shù)狀模型數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#使用Cancellation取消異步任務(wù)的全過(guò)程

    C#使用Cancellation取消異步任務(wù)的全過(guò)程

    在開(kāi)發(fā)應(yīng)用程序時(shí),我們經(jīng)常會(huì)遇到一些需要長(zhǎng)時(shí)間運(yùn)行的操作,比如:從網(wǎng)絡(luò)下載大文件、處理大量數(shù)據(jù)、執(zhí)行復(fù)雜的計(jì)算任務(wù)等,這些操作可能需要幾秒、幾分鐘甚至更長(zhǎng)時(shí)間才能完成,為了安全地取消操作,.NET提供了CancellationToken機(jī)制,本文給大家詳細(xì)介紹一下
    2026-01-01
  • Unity UGUI的InputField輸入框組件使用詳解

    Unity UGUI的InputField輸入框組件使用詳解

    這篇文章主要為大家介紹了Unity UGUI的InputField輸入框組件使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • C#基礎(chǔ)語(yǔ)法:結(jié)構(gòu)和類區(qū)別詳解

    C#基礎(chǔ)語(yǔ)法:結(jié)構(gòu)和類區(qū)別詳解

    這篇文章主要介紹了C#基礎(chǔ)語(yǔ)法:結(jié)構(gòu)和類詳解,本文總結(jié)了一些結(jié)構(gòu)和類的不同之處并給出了測(cè)試區(qū)別特性代碼,需要的朋友可以參考下
    2015-06-06
  • C#實(shí)現(xiàn)加密bat文件的示例詳解

    C#實(shí)現(xiàn)加密bat文件的示例詳解

    這篇文章主要為大家詳細(xì)介紹了C#如何實(shí)現(xiàn)加密bat文件的功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-01-01
  • C#網(wǎng)頁(yè)跳轉(zhuǎn)方法總結(jié)

    C#網(wǎng)頁(yè)跳轉(zhuǎn)方法總結(jié)

    這篇文章主要介紹了C#網(wǎng)頁(yè)跳轉(zhuǎn)方法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • C#中內(nèi)存緩存和對(duì)象池化的實(shí)現(xiàn)

    C#中內(nèi)存緩存和對(duì)象池化的實(shí)現(xiàn)

    本文主要介紹了C#中內(nèi)存緩存和對(duì)象池化的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-06-06
  • C#判斷數(shù)據(jù)類型的簡(jiǎn)單示例代碼

    C#判斷數(shù)據(jù)類型的簡(jiǎn)單示例代碼

    本篇文章要是對(duì)C#中判斷數(shù)據(jù)類型的簡(jiǎn)單示例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2014-01-01
  • C#判斷文件是否存在的常用方法

    C#判斷文件是否存在的常用方法

    本文介紹了C#中檢查文件是否存在幾種常用方法,包括File.Exists、FileInfo以及異常處理和異步檢查方式,每種方法都有其適用場(chǎng)景和注意事項(xiàng),需要的朋友可以參考下
    2025-11-11
  • c# 空合并運(yùn)算符“??”的使用詳解

    c# 空合并運(yùn)算符“??”的使用詳解

    本篇文章是對(duì)c#中空合并運(yùn)算符“??”的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C#異步綁定數(shù)據(jù)實(shí)現(xiàn)方法

    C#異步綁定數(shù)據(jù)實(shí)現(xiàn)方法

    這篇文章主要介紹了C#異步綁定數(shù)據(jù)實(shí)現(xiàn)方法,實(shí)例分析了C#操作數(shù)據(jù)庫(kù)及異步綁定的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09

最新評(píng)論

吉水县| 上犹县| 宜章县| 卫辉市| 安康市| 桃园市| 牟定县| 泸定县| 龙山县| 峨山| 屯留县| 宣威市| 色达县| 大港区| 威远县| 沧源| 永春县| 方正县| 乐山市| 贵定县| 陵川县| 新乐市| 乌兰察布市| 长海县| 库车县| 九龙城区| 合水县| 枣强县| 肃北| 南陵县| 民和| 江山市| 大兴区| 当雄县| 宁津县| 朝阳区| 黄平县| 个旧市| 祁门县| 罗江县| 黎城县|