Определить значение DDL для динамического создания столбца в событии oninit - PullRequest
1 голос
/ 06 мая 2009

Приветствую, надеюсь, есть простое решение этой сложной проблемы. Пожалуйста, исправьте любые заблуждения, которые у меня есть по пути. Некоторое время назад я написал GrivView с возможностью динамических столбцов. Столбцы добавляются в событие страницы OnInit, поэтому они добавляются ДО применения представления состояния. Они повторно применяются к каждой публикации в этом разделе страницы, так что при применении состояния представления сохраняются изменения, сделанные пользователем и не зафиксированные в базе данных. Это также требуется, если вы не хотите, чтобы дерево управления вашим состоянием просмотра вышло из синхронизации и взорвало все.

Моя текущая проблема заключается в том, что теперь мне поручено делать по существу то же самое, когда столбцы будут различаться в зависимости от выпадающего списка (я пересоздаю GridView, если ddl изменится, и пользователи потеряют всю работу с предупреждение). Как я могу получить идентификатор, выбранный в выпадающем списке в событии OnInit? Насколько я понимаю, когда пользователь изменяет значение ddl на стороне клиента, запускается вызов JavaScript «__doPostBack». Затем запрос страницы отправляется на сервер, но к тому времени, когда в обработчике событий появляется новое значение, я уже не могу добавить столбцы.

Я увидел кое-что, что мне показалось многообещающим, когда люди пытались определить, какой элемент управления вызвал публикацию, но этот код опирается на page.Request.Params.Get ("__ EVENTTARGET"); и page.Request.Form, которые пусты.

Должен ли я посмотреть на состояние сеанса, попытаться «отправить» идентификатор, используя манипуляции на стороне клиента, или каким-либо другим способом (возможно, хитрым способом посмотреть в состоянии просмотра, которое мне не хватает)?

Спасибо за любые идеи !!!

1 Ответ

2 голосов
/ 06 мая 2009

Отправленное значение элемента управления доступно из коллекции Request [], даже если кажется, что ваша форма еще не была восстановлена.

Вы должны просто иметь возможность получить выбранное значение во время Init (), используя следующее:

string value = Request["myDropDownID"];
...