Определить значение DDL для динамического создания столбца в событии oninit
Вопрос
Приветствую, надеюсь, есть простое решение этой сложной проблемы. Пожалуйста, исправьте любые заблуждения, которые у меня есть по пути. Некоторое время назад я написал GrivView с возможностью динамических столбцов. Столбцы добавляются в событие страницы OnInit, поэтому они добавляются ДО применения представления состояния. Они повторно применяются к каждой публикации в этом разделе страницы, так что при применении состояния представления сохраняются изменения, сделанные пользователем и не зафиксированные в базе данных. Это также требуется, если вы не хотите, чтобы ваше дерево управления состоянием просмотра вышло из синхронизации и взорвало все.
Моя текущая проблема заключается в том, что передо мной сейчас стоит задача по существу делать то же самое, когда столбцы будут отличаться в зависимости от выпадающего списка (я пересоздаю GridView, если ddl изменится, и пользователи потеряют всю работу с предупреждение). Как я могу получить идентификатор, выбранный в выпадающем списке в событии OnInit? Насколько я понимаю, когда пользователь изменяет значение ddl на стороне клиента, JavaScript & # 8220; __ doPostBack & # 8221; звонок уволен. Затем запрос страницы отправляется на сервер, но к тому времени, когда в обработчике событий появляется новое значение, я уже не могу добавить столбцы. Р>
Я увидел кое-что, что, по моему мнению, было многообещающим, когда люди пытались определить, какой элемент управления вызвал обратную публикацию, но этот код опирается на page.Request.Params.Get (" __ EVENTTARGET "); и page.Request.Form, которые пусты.
Если я посмотрю на состояние сеанса, попробуйте & # 8216; отправить & # 8217; идентификатор, использующий манипуляции на стороне клиента, или какой-либо другой метод (возможно, хитрый способ посмотреть в состоянии просмотра, которое мне не хватает)?
Спасибо за любые идеи !!!
Решение
Отправленное значение элемента управления доступно из коллекции Request [], даже если кажется, что ваша форма еще не была восстановлена.
Вы должны просто иметь возможность получить выбранное значение во время Init (), используя следующее:
string value = Request["myDropDownID"];