小村农家

          如果不能骄傲的活着,我选择死亡!                                         点击这里给我发消息
随笔 - 212, 文章 - 0, 评论 - 120, 引用 - 1
数据加载中……

DropDownList控件选中项的深入研究

在开发中,大家肯定多次用到DropDownList控件。对于它的选中项,做了一些研究,不知大家在开发中是否遇到。
可以通过SelectedValue,SelectedIndex等设置选中项。也可以通过获取到DropDownList控件中的一个ListItem,将该项的Selected设置为

true。如果想使用Item.Selected=true,应该调用ClearSelection(),把所有item选中状态设为false。研究过程如下:

例如:绑定城市的DropDownList控件命名为ddlCity。假设已经把全国的地级市绑定在控件上。然后,
A,如果代码为:
ddlCity.SelectedIndex=1;
ddlCity.SelectedIndex=2;
则选中的为ddlCity中的第三项(索引从零开始)。

B,如果代码为:
ddlCity.Items[1].Selected=true;
ddlCity.Items[2].Selected=true;
执行后则会出现异常:“不能在 DropDownList 中选择多个项”

C,当然,在下拉框控件(DropDownList)中调用SelectedValue等选中项属性时。如果没有选中项,DropDownList会把第一项默认选中。所以

如果有如下代码也会出现异常:“不能在 DropDownList 中选择多个项”
string strSelect=ddlCity.SelectedValue;
ddlCity.Items[2].Selected=true;

D,诡异的是如果有如果代码与B项相同,仅多加一行代码:ddlCity.SelectedIndex=3;就不会出现异常。代码如下:
ddlCity.Items[1].Selected=true;
ddlCity.Items[2].Selected=true;
ddlCity.SelectedIndex=3;

.net自带控件还是有不完美的地方。记录下来,希望对大家有所帮助。

posted on 2008-04-23 15:25 农民 阅读(605) 评论(4)  编辑 收藏 网摘 所属分类: .net技术

评论

#1楼    回复  引用  查看    

ddlCity.Items[1].Selected=true;
ddlCity.Items[2].Selected=true;
ddlCity.SelectedIndex=3;

这有什么鬼异的。

ddlCity.SelectedIndex=3;

会把前两项的选定改成false,所以就不会出错了。

2008-04-24 19:50 | 金色海洋(jyk)      

#2楼    回复  引用    

to:金色海洋(jyk)
道理当然很简单。
只是微软能让ddlCity.SelectedIndex=3,在选中该项后,其它的项就不选中了。
为什么在ddlCity.Items[2].Selected=true;时,不能把其它项不选中呢?非要在执行一次ClearSelection(),把其它项不选中。
2008-04-24 21:01 | sutton [未注册用户]

#3楼    回复  引用  查看    

可能是因为 DropDownList 是单选,而CheckBoxList是多选,

而他们两个的 Items 好像是继承基类得到的。(只是猜想没有考证)

ddlCity.Items[2].Selected=true; 就是设置一个选项为选中,不应该做“多余”的事情

ddlCity.SelectedIndex=3 就是设置第四个(我记得是从零开始数)选项为选中状态,其他的自然就是不选中的状态。

你可以试一下 CheckBoxList 。
CheckBoxList1.SelectedIndex=3 是不是也把其他的已经选中的选项设置成为没有选中了。(又是猜想没有验证)


对于这种问题,我写了一个自定义服务器控件,扩展了几个函数来解决

http://www.cnblogs.com/jyk/archive/2008/02/26/1082807.html

2008-04-25 09:50 | 金色海洋(jyk)      

#4楼 [楼主]   回复  引用  查看    

其实这个问题,平时遇到的几率还是很小的。
而且通过设置SelectedValue也可以避免
2008-06-20 16:02 | 农民      

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-04-23 15:27 编辑过
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》



相关文章:

相关链接: