亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

c#的treeview綁定和獲取值的方法

2020-01-24 02:41:39
字體:
來源:轉載
供稿:網友

對Treelist 的一些功能的實現

1.數據綁定最基本的兩個屬性:KeyFieldName和ParentFieldName。(這兩個屬性一設置就基本上可以實現分級了)

可以通過代碼的編寫實現,也可以直接在屬性里面直接實現。

這種數據庫設計是比較常見的,一般數據滿足樹形關系就可以這樣設計。綁定數據時,只需指定DataSource為對應 的DataTable,指定KeyFieldName為表主鍵字段,ParentFieldName為表指向主鍵的外鍵字段名。

復制代碼 代碼如下:

private void BindData()
{
    this.tlOffice.DataSource = dtOffice;
    tlOffice.KeyFieldName = "OfficeID";
    //tlOffice.DataMember = "OfficeName";
    tlOffice.Columns["OfficeName"].Caption = "局名稱";
    tlOffice.ParentFieldName = "ParentOfficeID";
}

2 基本功能的實現

①  . 選擇某一節點時,該節點的子節點全部選擇  取消某一節點時,該節點的子節點全部取消選擇

哪個節點引起行為的?節點是選中還是取消選中?由此確定方法的兩個參數:TreeListNode和CheckState。遍歷該節點及其子孫,并將其選中狀態設置為該節點的狀態即可。

復制代碼 代碼如下:

/// <summary>
         /// 選擇某一節點時,該節點的子節點全部選擇  取消某一節點時,該節點的子節點全部取消選擇
         /// </summary>
         /// <param name="node"></param>
         /// <param name="state"></param>
         private void SetCheckedChildNodes(TreeListNode node, CheckState check)
         {
             for (int i = 0; i < node.Nodes.Count; i++)
             {
                 node.Nodes[i].CheckState = check;
                 SetCheckedChildNodes(node.Nodes[i], check);
             }
         }

② .某節點的子節點全部選擇時,該節點選擇;某節點的子節點未全部選擇時,該節點不選擇

復制代碼 代碼如下:

/// <summary>
         /// 某節點的子節點全部選擇時,該節點選擇   某節點的子節點未全部選擇時,該節點不選擇
         /// </summary>
         /// <param name="node"></param>
         /// <param name="check"></param>
         private void SetCheckedParentNodes(TreeListNode node, CheckState check)
         {
             if (node.ParentNode != null)
             {

                 CheckState parentCheckState = node.ParentNode.CheckState;
                 CheckState nodeCheckState;
                 for (int i = 0; i < node.ParentNode.Nodes.Count; i++)
                 {
                     nodeCheckState = (CheckState)node.ParentNode.Nodes[i].CheckState;
                     if (!check.Equals(nodeCheckState))//只要任意一個與其選中狀態不一樣即父節點狀態不全選
                     {
                         parentCheckState = CheckState.Unchecked;
                         break;
                     }
                     parentCheckState = check;//否則(該節點的兄弟節點選中狀態都相同),則父節點選中狀態為該節點的選中狀態
                 }

                 node.ParentNode.CheckState = parentCheckState;
                 SetCheckedParentNodes(node.ParentNode, check);//遍歷上級節點
             }
         }

上兩步寫好了,別忘了上面的兩個方法在TreeList_AfterCheckNode里面觸發:

復制代碼 代碼如下:

private void tlOffice_AfterCheckNode(object sender, DevExpress.XtraTreeList.NodeEventArgs e)
{
    SetCheckedChildNodes(e.Node, e.Node.CheckState);
    SetCheckedParentNodes(e.Node, e.Node.CheckState);
}

3.獲取選中的復選框數據列表

復制代碼 代碼如下:

private List<int> lstCheckedOfficeID = new List<int>();//選擇局ID集合
            /// <summary>
         /// 獲取選擇狀態的數據主鍵ID集合
         /// </summary>
         /// <param name="parentNode">父級節點</param>
         private void GetCheckedOfficeID(TreeListNode parentNode)
         {
             if (parentNode.Nodes.Count == 0)
             {
                 return;//遞歸終止
             }

             foreach (TreeListNode node in parentNode.Nodes)
             {
                 if (node.CheckState == CheckState.Checked)
                 {
                     DataRowView drv = tlOffice.GetDataRecordByNode(node) as DataRowView;
                                          //關鍵代碼,就是不知道是這樣獲取數據而糾結了很久(鬼知道可以轉換為DataRowView啊)
                     if (drv != null)
                     {
                         int OfficeID = (int)drv["OfficeID"];
                         lstCheckedOfficeID.Add(OfficeID);
                     }

                    
                 }
                 GetCheckedOfficeID(node);
             }
         }

下面測試獲取主鍵列表:

復制代碼 代碼如下:

private void btnCheck_Click(object sender, EventArgs e)
         {
             this.lstCheckedOfficeID.Clear();

             if (tlOffice.Nodes.Count > 0)
             {
                 foreach (TreeListNode root in tlOffice.Nodes)
                 {
                     GetCheckedOfficeID(root);
                 }
             }

             string idStr = string.Empty;
             foreach (int id in lstCheckedOfficeID)
             {
                 idStr += id + " ";
             }
             MessageBox.Show(idStr);
         }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
最近2019中文字幕mv免费看| 97在线看免费观看视频在线观看| 91久久国产精品91久久性色| 日本成熟性欧美| 国产mv免费观看入口亚洲| 全球成人中文在线| 成人免费在线视频网址| 国产婷婷色综合av蜜臀av| 国产成人精品久久二区二区| 欧美国产日本高清在线| 亚洲一区二区国产| 欧美日本精品在线| 成人午夜激情免费视频| 欧美一级淫片播放口| 中文字幕亚洲情99在线| 在线观看日韩视频| 亚洲美女自拍视频| 久久精品国产69国产精品亚洲| 最近2019年中文视频免费在线观看| 国产精品一区二区三区久久久| 成人欧美一区二区三区在线| 欧美成人一区在线| 国产suv精品一区二区| 亚洲视屏在线播放| 91chinesevideo永久地址| 久久亚洲精品一区| 久久国产精品久久国产精品| 成人福利免费观看| 91色p视频在线| 日韩精品在线播放| 久久久91精品国产| 最新的欧美黄色| 亚洲一区二区久久久久久| 色偷偷9999www| 国产欧美在线看| 国产一区二区三区在线播放免费观看| 日韩成人在线视频| 日韩视频在线观看免费| 欧美另类极品videosbestfree| 久久全球大尺度高清视频| 一区二区三区久久精品| 7m精品福利视频导航| 久久香蕉国产线看观看网| 美女精品久久久| 欧美疯狂xxxx大交乱88av| 亚洲一区二区中文| 欧美一区深夜视频| 亚洲国产日韩精品在线| 亚洲成人久久电影| 日韩精品电影网| 国产91精品高潮白浆喷水| 成年无码av片在线| 久久成人这里只有精品| 国产精品人人做人人爽| 亚洲电影av在线| 日韩成人激情影院| 国产精品成人av性教育| 国产精品va在线| 国产精品久久av| 欧美日韩免费观看中文| 亚洲国产精品yw在线观看| 欧美黑人巨大xxx极品| 午夜精品久久久久久久99黑人| 亚洲欧美一区二区三区情侣bbw| 欧美亚洲国产另类| 亚洲第一精品久久忘忧草社区| 57pao成人永久免费视频| 亚洲男人的天堂在线播放| 国产免费亚洲高清| 久久视频国产精品免费视频在线| 岛国av在线不卡| 亚洲成年网站在线观看| 一区二区三区视频免费在线观看| 亚洲成人性视频| 国产在线精品成人一区二区三区| 成人欧美一区二区三区黑人孕妇| 日韩精品免费观看| 国产精品看片资源| 亚洲精品国产拍免费91在线| 日韩亚洲欧美中文在线| 中文字幕日韩欧美| 97视频在线观看免费| 久久99热这里只有精品国产| 欧美日韩亚洲一区二| 欧美性受xxx| 日韩中文字幕在线播放| 国产美女主播一区| 亚洲成人动漫在线播放| 97超碰蝌蚪网人人做人人爽| 国外成人免费在线播放| 欧美三级xxx| 欧美老女人在线视频| 热久久视久久精品18亚洲精品| 91精品国产乱码久久久久久蜜臀| 欧美激情影音先锋| 欧美性猛交xxxx黑人猛交| 中文字幕日韩在线播放| 亚洲第一黄色网| 粗暴蹂躏中文一区二区三区| 中文字幕国产日韩| 日韩国产中文字幕| 夜夜躁日日躁狠狠久久88av| 国产精品久久久久久搜索| 日韩最新av在线| 国内精品久久久久久影视8| 亚洲欧洲视频在线| 在线电影av不卡网址| 欧美性猛交xxx| 91亚洲国产成人精品性色| 91天堂在线视频| 日韩欧美精品在线观看| 亚洲精品成人久久电影| 精品欧美国产一区二区三区| 精品国产一区av| 欧美在线免费看| 成人精品久久av网站| 日本一区二区在线免费播放| 国产成人亚洲综合91| 欧美裸体视频网站| 日韩精品欧美激情| 中文字幕国产亚洲2019| 日韩av电影在线播放| 国产成人精品在线视频| 在线观看中文字幕亚洲| 91精品国产91久久久久福利| 亚洲91av视频| 国产狼人综合免费视频| 91超碰中文字幕久久精品| 欧美性受xxxx白人性爽| 91在线观看免费观看| 国内精品久久久久久| 久久久之久亚州精品露出| 黄色成人在线免费| 欧美最顶级丰满的aⅴ艳星| 欧美激情视频一区| 欧美福利小视频| 亚洲国产精彩中文乱码av在线播放| 日韩在线精品视频| 日韩欧美精品中文字幕| 国产91精品青草社区| 成人黄色片在线| 成人av在线天堂| 欧美在线视频在线播放完整版免费观看| 91国内免费在线视频| 尤物九九久久国产精品的分类| 成人国产在线激情| 日韩美女视频免费在线观看| 久久综合免费视频影院| 亚洲最大的免费| 成人免费看吃奶视频网站| 国产精品久久久91| 精品香蕉一区二区三区| 国产91在线播放九色快色| 亚洲欧美日韩综合| 午夜精品免费视频| 国产深夜精品福利| 亚洲图片制服诱惑| 精品久久久久久亚洲国产300| x99av成人免费| 成人免费看片视频| 欧美性xxxx极品hd欧美风情| 91精品国产成人| 欧美日韩免费一区| 成人激情春色网|