|
在ASP.NET 2.0 网站页面的开发过程中,经常需要把DropDownList等列表类控件的SelectedValue值设置为一个从数据库或其他地方读取出来的值。
最简单的办法就是直接进行指定: DropDownList1.SelectedValue = "中国"; 但有的时候如果DropDownList1中没有"中国"这一项的话,赋值就会出现异常: 异常详细信息: System.ArgumentOutOfRangeException: “DropDownList1”有一个无效 SelectedValue,因为它不在项目列表中。
想要实现的目标:如果指定的值不在列表项中,则不设置选中项,而且不要抛出异常。
查看MSDN: SelectedValue 属性还可以用于选择列表控件中的某一项,方法是用该项的值设置此属性。如果列表控件中的任何项都不包含指定值,则会引发 System.ArgumentOutOfRangeException。
但奇怪的是这样赋值在大部分情况下都不会出错,只是偶尔会出错,通过反射查了一下SelectedValue的实现,找到了原因。 public virtual string SelectedValue { get { int num1 = this.SelectedIndex; if (num1 >= 0) { return this.Items[num1].Value; } return string.Empty; } set { if (this.Items.Count != 0) { if ((value == null) || (base.DesignMode && (value.Length == 0))) &n [1] [2] [3] 下一页 |