【asp精品源码栏目提醒】:本文主要为网学会员提供“C# 给TreeView控件绑定数据(ASP可作参考) - 其它资料”,希望对需要C# 给TreeView控件绑定数据(ASP可作参考) - 其它资料网友有所帮助,学习一下!
C 给 TreeView 控件绑定数据ASP.NET 可作参考本文采用的方法是使用一层 for 循环给 treeview 控件绑定数据C TreeView 控件绑定数据在实际的开发过程中,有时候也会需要用到 TreeView 这个控件,用到这个控件的时候一般情况下都是与数据库离得数据配合使用的也就是将从数据库读取到的数据绑定到 TreeView控件上。
刚开始接触到这个控件的时候我也不知道如何绑定数据,在网上查了下,都是使用循环来绑定数据的,而且是两层循环。
找了个例子看了一下觉得使用两层循环有点繁琐,于是就自己动手试了下,使用一层循环来绑定数据,完全可以达到目的。
一般情况下 TreeView 都有1到多个根节点,而每个根节点都有0到多个子节点,这样的数据读取就会涉及到两张表或多张表,所以就需要联表查询。
在联表查询的时候,不同的查询方式肯定对查询的结果有所影响。
我所使用的是 LEFT JOIN(左联)查询方式。
先看下最终的效果图:下面简单说下我的思路。
本次的例子涉及到两张表,分别是:A 表:CREATETABLE A aId INTPRIMARY KEY aName VARCHAR30A 表查询结果如下:B 表:CREATETABLE B bId INT aId INT bName VARCHAR30B 表查询结果如下:很显然,这两张表是有主外键关联的对这两张表联接查询,查询语句如下:SELECT A.aName 分组名称B.bName 姓名FROM ALEFTJOIN BON aId B.aId查询结果如下:在绑定数据的时候会以 A 表中的 aName 这个字段作为 TreeView 的根节点,以 B 表中的bName 作为子节点。
绑定后的结果如下:从联表查询的结果图来看, 其中第四分组和第六分组后面的数据是 NULL,也就是没有数据,但是在 A 表中这两条数据时存在的,所以在绑定数据的时候,在 TreeView 中的这两个根节点也是存在的,但是这两个根节点都没有子节点。
这就是为什么使用左联查询的原因。
在 c的代码中,将查询到的结果存储到 List中,然后将 List中的数据绑定到TreeView 中。
新建一个类 C该类中有 aName 何 bName 这两个成员;然后再在相关的事件中调用下面这个方法就可以给 TreeView 绑定数据。
publicvoid DrawTreeView while this.treeView1.Nodes.Count 0 this.treeView1.Nodes.RemoveAt0 List lci 数据源 int i 0 int j 0//treeview 控件中根节点的索引 int count lci.Count //为 treeview 控件添加第一个根节点 this.treeView1.Nodes.Addlcii.aName for i 1 i count i //为 treeview 控件中索引为 j 的根节点添加子节点 //如果当前根节点总存在子节点就为挡墙的根节点添加子节点 if lcii - 1.cName this.treeView1.Nodesj.Nodes.Addlcii - 1.bName //如果在 treeview 控件中索引为 j 的根节点的名称与即将要添加的根节点的名称相同 //就跳过本次循环进行下一次循环, 不为 TreeView 添加相同名称的根节点 ifthis.treeView1.Nodesj.Text lcii.aName continue //为 treeview 控件添加下一个根节点 this.treeView1.Nodes.Addlcii.aName //将 treeview 控件的根节点的索引增加1 //该索引值始终为 treeview 控件中的最后一个根节点的索引值 j //获取 treeview 控件中的根节点数 int nodescount this.treeView1.Nodes.Count //为最后一个根结点添加最后一个子节点 if lcicount - 1.bName this.treeView1.Nodesnodescount- 1.Nodes.Addlcicount - 1.bName 解决问题的方法不止一种,不同的人有不同的思路从而相处独特的解决之道,解决问题的效率也会有差异,善于借鉴也是一种学习方法。
如果对本次的例子有兴趣或存在疑问的可以自己动手试一下;如果觉得本次例子号或者对自己有所帮助,欢迎转载、收藏。
现附上 A 表、B 表以及 C 类的源码:A 表:CREATETABLE A aId INTPRIMARY KEY aName VARCHAR30INSERTINTO A VALUES1默认分组INSERTINTO A VALUES2第一分组INSERTINTO A VALUES3第二分组INSERTINTO A VALUES4第三分组INSERTINTO A VALUES5第四分组INSERTINTO A VALUES6第五分组INSERTINTO A VALUES7第六分组B 表:CREATETABLE B bId INT aId INT bName VARCHAR30INSERTINTO B VALUES11月之江南INSERTINTO B VALUES21张小明INSERTINTO B VALUES31李晓红INSERTINTO B VALUES41杨紫依INSERTINTO B VALUES51陈诗语INSERTINTO B VALUES62李诗玉INSERTINTO B VALUES73黄晓云INSERTINTO B VALUES84刘志华INSERTINTO B VALUES96陈坤华INSERTINTO B VALUES106杨欢INSERTINTO B VALUES112曾禾INSERTINTO B VALUES122曾雨荷INSERTINTO B VALUES133李严华INSERT INTOB VALUES141肖志伟INSERTINTO B VALUES156肖自卫INSERTINTO B VALUES166付红旭INSERTINTO B VALUES176刘青云INSERTINTO B VALUES183石步华INSERTINTO B VALUES193李红雁INSERTINTO B VALUES206张长胜C 类:Publicclass C Public string aNamegetset Public string bNamegetset Public C开发随心,尽善尽美--月之江南
上一篇:
ASP动态网站设计说明书
下一篇:
经济酒店发展:China''s economy hotel market development strategies