感谢阅读,这有点长,但我希望有人能帮助我!
我有以下设置:
在网络应用程序上,我有一个更新面板
在这个更新面板中,我有两个常规面板和一组两个单选按钮,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 中,然后转到收音机 1 并且面板 1 出现,CascadingDropDowns 似乎已被重置,因为 SelectedValue = nothing (null),除了在第一个 DDL 上,当我选择我的第一个选择时,第二个 DropDownList 被激活,但是没有为第一个 DDL 触发 SelectedIndexChanged 方法,而是运行最后选择的 DDL 的方法,并且由于尚未加载框,因此出现错误。
为了更清楚一点,这里有一个小例子:
假设我点击了radio1。显示带有 Group1 的 Panel1。
Group1 有盒子 City、Store、Department、Shelf。
当我选择城市时,加载商店,当我选择商店时,加载部门,等等。
正在加载的列表框会加载项目。换句话说,如果我选择城市,该框将显示给定城市中的所有项目。
如果我选择商店,列表框将显示给定商店中的所有商品,依此类推。
假设在第一次尝试中,我选择了城市,选择了商店,然后选择了部门。该框现在应该显示所选部门中的所有项目。
现在,假设我单击radio2。带有 Group2 的 Panel2 出现。
这里我只有box city,和shelf。这意味着当我再次选择一个城市时,我将在列表框中获取城市中的所有项目,并且货架框将加载属于城市的所有货架。如果我选择架子,我将获得给定架子中的物品。
假设我选择了 X 市和货架 y。
然后我回到radio1,panel1 和group1 都出现了。
请记住,在这个 checkchanged 上,我设置了 SelectedValue = nothing。因此,列表看起来好像被重置了。
除了当我选择我的城市时,在我的列表框中什么都没有显示。而不是运行 citySelectIndexChanged 方法,而是运行 DepartmentSelectedIndexChanged 方法,因为它是最后一个活动的 DDL,自然而然,列表框没有正确加载,因为此时由于 CascadingDDL 被重置,部门框还没有被加载。
几天来我一直在头疼,似乎无法弄清楚……有什么想法吗?