2009-05-18 7 views
2

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

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

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

+0

Можете ли вы опубликовать код, используемый для создания элементов управления. – Lazarus

ответ

2

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

Here's a related question which might have some useful information.

0

вам нужно создать ДобавитьОбработчик:

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 

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

Смежные вопросы