关于RadioButtonList,CheckBoxList,DropDownList的Selected Bind

本文探讨了ASP.NET中列表控件如RadioButtonList等的选中操作问题,包括item.Selected=true的局限性及解决方案,如何避免在没有选中项时使用SelectedItem.Selected=false引发的问题,并提供了一个通用的绑定方法确保在任何情况下都能正确设置选中状态。
摘要由CSDN通过智能技术生成

1. item.Selected = true;有时不起作用

例如当你先选中第三项之前的任何一项,然后执行下面代码是可以实现第三项被选中的,而当你选中第三项之后的任何一项的时候,你再去执行如下代码,你将看到没任何变化,也就是第三项没被选中,这也许是Microsoft VS的一个bug.

ListItem item= this.RadioButtonList1.Items.FindByValue("第三项value");
item.Selected = true;

2. 对于习惯使用.SelectedItem.Selected = false;的人要小心了。

SelectedItem.Selected = false; 注意考虑当前没有任何选中的情况,
比如RadioButton,CheckBox类型可能当前就没选中的,那样SelectedItem.Selected = false就未将对象应用
到对象的是实例,如果是DropDownList类型的也许可以,毕竟它默认肯定有一项被选中,所以不会出错。

3. 在AJAX里面Selected Bind的时候也要小心

因为AJAX是部分刷新,所以假如说你第一项现在是选中的,现在你用某中方法去选中第二项,那么如果你没把SelectedIndex = -1,那么这时候你第一项第二项都将被选中。

4. **list.SelectedValue = value;也可以执行selected, SelectedIndex =数值,也是可以设置被选中的。

当然你可以用循环的方式比较值或text来执行是否选中。

总结一个通用的方法,下面这个方法,无论你的数据结构怎么变化,无论你的list是固定的还是绑定的,无论是否使用ajax等等情况都不会产生任何问题,也不需要去修改任何代码。如下:

            ListItem item = this.**List.Items.FindByValue("YourValue")  //FindByText("") is ok.
            this.**List.SelectedIndex = -1;
            if (item != null)
            {
                item.Selected = true;
            }

之前我是小看了这个简单的Bind,后来发现里面的学问相当大,上面这个代码很简单吧,而且任何情况都不会问题,当然对于那些很简单而且也不会变化的**list来讲,这个有点复杂了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值