спасибо за чтение, это немного долго, но я надеюсь, что кто-то может мне помочь!
У меня есть следующие настройки:
В веб-приложении у меня есть панель обновления
Внутри этой панели обновлений у меня есть две обычные панели и набор из двух переключателей: radio1 и radio2.
На Panel1 у меня есть 4 выпадающих списка (давайте назовем это DDL group1), загружаемых с помощью расширителя CascadingDropDown, то есть первый блок вызывает второй, и так далее. Во всех 4 DDL включен автоответчик. Это означает, что каждый раз, когда я выбираю значение, вызывается метод SelectedIndexChanged, который загружает данные из базы данных на основе информации, выбранной в последнем DDL.
На Panel2 у меня такая же настройка, за исключением того, что у меня только 2 DDL (назовем это DLL группа 2), также связанных как каскадные выпадающие списки. У них также есть методы SelectedIndexChanged.
Группы DLL 1 и 2 не зависят друг от друга.
Для переключателей есть метод OnSelectedIndexChanged для каждой кнопки.
При каждом изменении я устанавливаю значение SelectedValue первого CascadingDropDown (на обеих панелях) равным нулю (или ничего в VB).
Когда я выбираю радио1, панель 1 видна, панель 2 невидима. С первого раза все работает как положено.
Когда я выбираю радио2, панель 2 видна, панель 1 невидима. Опять же, на первом ходу все работает как положено.
Тогда возникает проблема: если я нахожусь в радио 2, и иду на radio1, и панель 1 появляется, казалось бы, сброшены CascadingDropDowns из-за SelectedValue = nothing (null), за исключением того, что в первом DDL, когда я выберите мой первый выбор, второй DropDownList активирован, однако метод SelectedIndexChanged не запускается для первого DDL, вместо этого запускается метод последнего выбранного DDL, и поскольку ящики не загружены, я получаю ошибку.
Чтобы быть более понятным, вот небольшой пример:
Предположим, я нажал на радио1. Panel1 с Group1 показывает вверх.
Группа1 имеет ящики Город, Магазин, Отдел, Полка.
Когда я выбираю город, Магазин загружается, когда я выбираю магазин, загружается отдел и т. Д.
Загружаемый список загружает элементы. Другими словами, если я выберу город, в окне будут показаны ВСЕ предметы в данном городе.
Если я выберу Магазин, в списке отобразятся все товары в данном магазине и т. Д.
Предположим, что с первой попытки я выбрал город, выбрал магазин и выбрал отдел. В окне теперь должны быть показаны все предметы в выбранном отделе.
Теперь предположим, что я нажимаю radio2. Появляется Panel2 с Group2.
Здесь у меня есть только ящики город и полка. Это означает, что когда я выберу город, я снова получу в списке все элементы в городе, а в полке загрузятся все полки, принадлежащие городу. Если я выберу полку, я получу предметы на заданной полке.
Предположим, я выбрал Город X и полку y.
Затем я возвращаюсь к радио1, панель 1 отображается так же, как и группа 1.
Помните, что в этой пометке я установил SelectedValue = none. Таким образом, список выглядит так, как будто его сбросили.
За исключением того, что когда я выбираю свой город, в моем списке ничего не отображается. Вместо запуска метода citySelectIndexChanged выполняется метод DepartmentSelectedIndexChanged, поскольку он был последним активным DDL, и, естественно, список не загружается должным образом, поскольку в настоящее время, поскольку CascadingDDL был сброшен, окно отдела не было загружен.
Я уже несколько дней ломаю голову и никак не могу понять ... какие-нибудь идеи?