感谢阅读,这有点长,但我希望有人可以帮助我!
我有以下设置:
在网络应用上,我有一个更新面板
在这个更新面板中,我有两个常规面板和一组两个单选按钮,radio1和radio2。
在Panel1上,我有4个下拉列表(让我们称之为DDL group1),由CascadingDropDown Extender加载,这意味着第一个框触发第二个,依此类推。所有4个DDL都启用了自动后备,这意味着每次选择一个值时,都会调用SelectedIndexChanged方法,该方法根据在上一个DDL上选择的信息从数据库加载数据。
在Panel2上,我有相同的设置,除了我只有2个DDL(让我们称之为DLL组2),也链接为级联下拉列表。这些也有SelectedIndexChanged方法。
DLL组1和2彼此独立。
对于单选按钮,每个按钮都有一个OnSelectedIndexChanged方法。
在每次更改时,我将第一个CascadingDropDown的SelectedValue(在两个面板上)设置为null(或VB中没有任何内容)。
当我选择radio1时,panel1可见,panel2不可见。一开始,一切都按预期工作。
当我选择radio2时,panel2可见,panel1不可见。同样,在第一次运行时,一切都按预期工作。
然后问题出现了:如果我在收音机2中,然后转到radio1并且面板1出现,CascadingDropDowns似乎已经被重置,因为SelectedValue = nothing(null),除了在第一个DDL上,当我选择我的第一个选择,第二个DropDownList被激活,但是没有为第一个DDL触发SelectedIndexChanged方法,而是运行最后选择的DDL方法,并且由于没有加载框,我收到错误。
更清楚一点,这是一个小例子:
假设我点击了radio1。 Panel1与Group1显示。
Group1有盒子City,Store,Department,Shelf。
当我选择城市时,会加载商店,当我选择商店,加载部门等等。
正在加载的列表框加载项目。换句话说,如果我选择城市,则该框将显示给定城市中的所有项目。
如果我选择商店,列表框将显示给定商店中的所有商品,依此类推。
让我们假设在第一次尝试时,我选择了一个城市,我选择了一个商店,然后我选择了部门。该框现在应该显示所选部门中的所有项目。现在,假设我点击了radio2。具有Group2的Panel2显示。
这里我只有盒子城市和货架。这意味着当我选择一个城市时,我将再次进入列表框中城市中的所有项目,并且货架框将加载属于城市的所有货架。如果我选择货架,我将获得给定货架中的物品。
假设我选择了城市X和货架y。
然后我回到radio1,panel1和group1一起显示。
请记住,在这个checkchanged上,我设置了SelectedValue = no。因此,列表看起来好像已被重置。
当我选择我的城市时,在我的列表框中没有任何显示。而不是运行citySelectIndexChanged方法,而是运行DepartmentSelectedIndexChanged方法,因为它是最后一个活动的DDL,当然,列表框无法正确加载,因为此时,由于CascadingDDL已重置,因此部门框尚未被重置加载。
我已经打破了好几天了,似乎无法弄清楚......有什么想法吗?
答案 0 :(得分:0)
听起来解决方法是不在单选按钮OnSelectedIndexChanged方法中将第一个级联下拉列表的SelectedValue重置为null。
如果面板是独立的,如果用户在单选按钮之间来回切换,保持之前选择的值不会有任何伤害,对吗?