Динамически добавлять нижний колонтитул в ASP.NET GridView - PullRequest
2 голосов
/ 18 мая 2009

Я пытаюсь добавить строку нижнего колонтитула DropDownLists в мой элемент управления GridView. Проблема в том, что я не знаю, сколько столбцов будет в моем DataSource во время разработки, поэтому я пытаюсь использовать AutoGenerateColumns = true и не указывать шаблоны столбцов. Поэтому способ добавления элементов управления DropDownList в нижний колонтитул заключается в динамическом кодировании события DataBound объекта GridView.

Это прекрасно работает, за исключением того, что я хотел бы сделать что-то с SelectedItem каждого из DropDownLists, когда пользователь нажимает кнопку. Похоже, что эти динамически добавленные элементы управления больше не существуют в сообщении, когда пользователь нажимает кнопку, проблема заключается в том, что я не указываю тег runat = "server" в элементах управления DropDownList.

Есть ли другой способ добавить эти раскрывающиеся списки в шаблон FooterTemplate без указания всех столбцов, чтобы иметь доступ к их SelectedItems, когда пользователь нажимает кнопку на странице?

Ответы [ 2 ]

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

Вы частично правы - динамически добавленные элементы управления больше не существуют после обратной передачи. Они не будут добавлены повторно, пока не будет запущено событие DataBound. Проблема в том, что события привязки данных происходят после событий управления, то есть после события Click вашей кнопки. Таким образом, в точке жизненного цикла страницы, где обрабатывается событие click, эти элементы управления еще не были воссозданы.

Вот связанный вопрос, который может содержать некоторую полезную информацию .

0 голосов
/ 19 мая 2009

вам нужно создать Addhandler:

dim dropdownlistname as new Dropdownlist
Addhandler dropdownlistname.selected_indexchanged,AddressOf dropdownlistname_SelectedIndexChanged

тогда вам нужно создать подпрограмму следующим образом:

Protected Sub dropdownlistname_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddldept.SelectedIndexChanged

'Insert Code here

End sub

Итак, это создает событие и объявляет адрес для этого события. Вы должны быть в состоянии написать любой код в этом событии.

...