Повторное заполнение выпадающего списка вне панели обновления - PullRequest
0 голосов
/ 20 декабря 2011

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

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

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

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

1 Ответ

0 голосов
/ 20 декабря 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...