今天在系统代码中发现了一个BUG,是关于DropDownList 的SelectedValue 与SelectedIndex 。
系统原来的开发人员喜欢直接用SelectedValue 设置选中值。这样就会出现再次绑定值时如果选中值不在新绑定的数据集引发的异常:
“DropDownList1”有一个无效 SelectedValue ,因为它不在项目列表中。参数名: value
解决办法:在代码中尽量不要用SelectedValue ,而用SelectedIndex ,例如:
DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue("XXX"));
或者
DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByText("XXX"));
这样在再次绑定时就不会出现上述异常。
说明:第二次绑定时 将DropDownList1.SelectedIndex = -1;