日期:2014-05-18  浏览次数:20368 次

使用DrowpDownList的问题
最近开发一个商品管理系统遇到下拉列表框问题

数据库products

  id name fatherid
  1 书籍 0
  2 CD 0
  3 软件 0 
  4 计算机类 1
  5 文学类 1
  6 流行歌曲 2
  7 古典音乐 2
  8 乐队 2
  9 游戏 3
  10 办公软件 3
  .
  .
  .
填充到dropdownlist中是按照id排序的,想按照一下方式显示,请叫可以通过哪些方法实现?


  书籍
  计算机类
  文学类  
  CD
  流行歌曲
  古典音乐
  乐队  
  软件  
  游戏  
  办公软件  
   
 并且判断如果fatherid为0则表示为主类,不能选择。只能对子类进行选择。不同类别的选项背景用不同颜色表示,以示区别。同时也希望大家能够讨论一下一般处理的情况。  


------解决方案--------------------
你的需求实现倒是可以实现,不过太麻烦了,维护和扩展都不方便,还不如改下设计思路,用两个dropdownlist来实现,类似于省市二级联动的效果,属于比较常规的实现方式,网上的例子也到处都是
------解决方案--------------------
ls说的有道理。
建议楼主换种方式来实现!
------解决方案--------------------
1.
手动【递归】创建添加项

2. 颜色设置
// 
<listitem style="color:red" value="1">Item#1</listitem>

// 
ListItem item = new ListItem();
item.Attributes["style"] = "color:red";
------解决方案--------------------
这个我做过 嘻嘻

把数据存在一个DataView里  
用RowFileter过滤 拼串 
最后绑定  挺好玩的
如果要代码  发我的mail吧  xep.com@163.com
------解决方案--------------------
这个很容易 用select~(dropdownlist到了网页上也是select~)
<select>
<optgroup id="l1" label="书籍">
<option>计算机类</option>
<option>文学类</option>
</optgroup>
<optgroup label="CD">
<option> 流行歌曲</option>
<option>古典音乐</option>
<option>乐队</option>
</optgroup>
</select>

要动态实现的话 可以直接在HTML里写循环~
------解决方案--------------------
with thetable as
(
select name,Id,Rank() over(partition by fatherId order by Id) Rank from products 
)
select * from thetable
这样可以选出各个按各个fatherId为分类的各选项,在DropDownList中可以实现这些,但是比较麻烦。。建议还是采用AJAX联动的方式比较好一些,把根类绑定到一个DDL中。子选项放到另一个DDL中。。
------解决方案--------------------
似乎不是很难解决,顶到明天
------解决方案--------------------
LSSLU是正解
dropdownlist里有分组的属性,LZ可以试试看
------解决方案--------------------
mark ^_^