CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

【怎么构建多级树形结构的下拉列表框】--在线等,马上结帐

楼主chunsky(春天.NET)2004-09-04 17:35:08 在 .NET技术 / ASP.NET 提问

例如:  
  表结构  
  -----  
  id(编号)     name(名称)   parentid(父类ID)  
        1                     一级目录1                 0  
        2                     一级目录2                 0  
        3                     一级目录3                 0  
        4                     二级目录1                 1  
        5                     二级目录2                 1  
        6                     二级目录3                 1  
        7                     二级目录4                 2  
   
   
  在下拉列表框里显示的结果如下  
  ------                                           对应的values值(id值)  
                              ├一级目录1                   1              
                                    ├二级目录1             4  
                                    ├二级目录2             5        
                                    ├二级目录3             6  
                              ├一级目录2                   2  
                                    ├二级目录4             7  
                              ├一级目录3                   3  
  ------------------------  
  最好有源码,有什么好的绑定方法  
                                     
  问题点数:50、回复次数:18Top

1 楼triout(笨牛)回复于 2004-09-04 17:50:20 得分 0

对这个问题,我是先把这些代码进行过滤、排序处理后再绑定的。Top

2 楼chunsky(春天.NET)回复于 2004-09-04 18:04:30 得分 0

有源码吗?Top

3 楼biduan(笔端)回复于 2004-09-04 18:43:29 得分 0

到也没有做过  
  逛逛Top

4 楼jijl2001(jijl2001)回复于 2004-09-04 18:43:36 得分 0

顶一下Top

5 楼Thristian(来过)回复于 2004-09-04 19:16:57 得分 0

我做过一个,不过是使用树型控件、文本框和一个按钮,按钮和文本框一起做成下拉框的样子,看起来就是一个下拉框,实际上是假的,按钮控制树型控件的显示,其他的就是写树型控件了。Top

6 楼chunsky(春天.NET)回复于 2004-09-04 19:25:23 得分 0

呵呵,不是吧,这样作假有什么意思Top

7 楼cgsun(colin)回复于 2004-09-04 21:56:52 得分 0

在数据库里先排好Top

8 楼chunsky(春天.NET)回复于 2004-09-05 10:46:57 得分 0

数据库里怎么排??Top

9 楼_NET2004(.NET菜鸟)回复于 2004-09-05 12:42:32 得分 0

我也想知道,谁可以实现这样的功能!Top

10 楼waterwood1998(中东singer)回复于 2004-09-05 15:03:16 得分 0

可以利用递归算法来实现!Top

11 楼ar7_top(黑白呸,男生女生呸)回复于 2004-09-06 09:26:06 得分 0

和生成树的原理是一样的呀  
  只不过你需要判断一下当前的层数  
  根据层数来判断显示文本的前面需要添加多少个空格Top

12 楼ar7_top(黑白呸,男生女生呸)回复于 2004-09-06 10:25:35 得分 50

///   <summary>  
  ///   绑定生成一个有树结构的下拉菜单  
  ///   </summary>  
  ///   <param   name="dtNodeSets">菜单记录数据所在的表</param>  
  ///   <param   name="strParentColumn">表中用于标记父记录的字段</param>  
  ///   <param   name="strRootValue">第一层记录的父记录值(通常设计为0或者-1或者Null)用来表示没有父记录</param>  
  ///   <param   name="strIndexColumn">索引字段,也就是放在DropDownList的Value里面的字段</param>  
  ///   <param   name="strTextColumn">显示文本字段,也就是放在DropDownList的Text里面的字段</param>  
  ///   <param   name="drpBind">需要绑定的DropDownList</param>  
  ///   <param   name="i">用来控制缩入量的值,请输入-1</param>  
  private   void   MakeTree(DataTable   dtNodeSets,string   strParentColumn,string   strRootValue,string   strIndexColumn,string   strTextColumn,DropDownList   drpBind,int   i)  
  {  
  //每向下一层,多一个缩入单位  
  i++;  
   
  DataView   dvNodeSets   =   new   DataView(dtNodeSets);  
  dvNodeSets.RowFilter   =   strParentColumn   +   "="   +   strRootValue;  
   
  string   strPading   =   "";     //缩入字符  
   
  //通过i来控制缩入字符的长度,我这里设定的是一个全角的空格  
  for(j=0;j<i;j++)  
  strPading   +=   " ";//如果要增加缩入的长度,改成两个全角的空格就可以了  
   
  foreach(DataRowView   drv   in   dvNodeSets)    
  {  
  TreeNode   tnNode   =   new   TreeNode();  
  ListItem   li   =   new   ListItem(strPading   +   "├"   +   drv[strTextColumn].ToString(),drv[strIndexColumn].ToString());  
  drpBind.Items.Add(li);  
  MakeTree(dtNodeSets,strParentColumn,drv[strIndexColumn].ToString(),strIndexColumn,strTextColumn,drpBind,i);  
  }  
   
  //递归结束,要回到上一层,所以缩入量减少一个单位  
  i--;  
  }  
  Top

13 楼ar7_top(黑白呸,男生女生呸)回复于 2004-09-06 10:30:57 得分 0

例如你如果要直接调用就可以  
   
  你先把所有的记录选出来,存放在一个数据表   dtTemp   里面  
  然后绑定到一个     drpDirectory  
   
  那么你如下调用就可以了  
  MakeTree(dtTemp   ,"parentid","0","id","name",drpDirectory,-1)  
   
  有什么问题的话上MSN   :   williams_qi@msn.com  
  Top

14 楼_NET2004(.NET菜鸟)回复于 2004-09-06 18:34:03 得分 0

ar7_top(黑白呸,男生女生呸)   :  
  TreeNode   tnNode   =   new   TreeNode();  
  此句显示未定义。  
   
  需要加入什么类啊?  
  Top

15 楼chunsky(春天.NET)回复于 2004-09-06 20:19:15 得分 0

顶一下Top

16 楼ar7_top(黑白呸,男生女生呸)回复于 2004-09-07 10:08:12 得分 0

对不起,一时马虎了,去掉那句话  
  那个是用来定义树结点的,呵呵呵  
  这个函数是从我自己写的一个绑定树的函数改过来的  
  嘻嘻嘻嘻Top

17 楼_NET2004(.NET菜鸟)回复于 2004-09-07 12:33:57 得分 0

搞定啦,谢谢Top

18 楼tjj36(忧郁的眼睛)回复于 2004-11-09 10:19:07 得分 0

mark   upTop

相关问题

  • TTreeView怎么构建层次树形结构(数据库相关)?
  • 哪里有 VFP6 可用的树形列表控件?
  • 怎样让树形列表支持复选
  • 请问哪里有 VS.NET 的树形列表控件,多谢了!
  • 如何实现树形列表(不是树形控件,是多列的列表),并且一次不是显示整个列表,需要层层展开
  • 文件系统的树形列表怎么做啊,不要ocx的
  • csdn论坛左边的树形列表开不到这是为什么
  • 网页中的树形列表怎么弄?(不好意思,只有10分了:))
  • 为什么我用total command时一用树形列表就回到E盘
  • 列表框如何排序(立马结帐)

关键词

  • 字段
  • 控件
  • 目录
  • 二级
  • 一级
  • 记录
  • 按钮
  • 绑定
  • dropdownlist
  • 缩入

得分解答快速导航

  • 帖主:chunsky
  • ar7_top

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo