Повторное заполнение выпадающего списка вне панели обновления

Возможно, это неосведомленность об асинхронных постбэках, так что позвольте мне там софтболом пообщаться.

У меня есть три каскадных выпадающих списка в панели обновлений, с помощью которых вы можете выбрать свой Магазин-> Отдел-> Продукт. Четвертый DDL находится за пределами панели обновления, и с его помощью вы выбираете своего конкурента. Разные магазины совпадают с разными конкурентами. Вид сетки (также снаружи) затем отображает соединение Store->Department->Product->Competitor Price.

Это прекрасно работает при первой загрузке и при переключении в другой магазин с таким же конкурентом. Но если вы измените DDL панели обновлений на магазин, который не разделяет выбранного конкурента, и нажмете "Показать" (вызывая PostBack), я получу "Неверный аргумент обратной передачи или обратного вызова". Если я удаляю DDL "Конкурента" и жестко кодирую конкурента gridview, ошибка исчезает, и я могу перемещаться без каких-либо ограничений.

Почему этот четвертый DDL не заселится при обратной передаче? Как мне исправить эту проблему?

1 ответ

Решение

Причина в том, что в последнем случае при изменении Store->Department->Product, если вы повторно привязываете DropDownlist Competitior, то ListItems изменится на сервере, но не будет отображаться клиенту, поскольку он не находится внутри какой-либо панели обновления и, следовательно, Конкурентный DropDownlist содержит старые значения.

при возникновении обратной передачи ASP.Net не поймет, как появились эти старые значения, и выдаст ошибку "Недопустимый аргумент обратной передачи или обратного вызова".

Лучший способ решить эту проблему - разместить свой выпадающий список (и сетку) внутри панели обновления.

Другие вопросы по тегам