Добавление обработчика событий в DropDownList внутри GridView - как?
У меня есть DropDownList внутри GridView. Теперь я хотел бы добавить обработчик событий для выпадающего списка, который будет реагировать на SelectedIndexChanged. Я вложил DropDownList в GridView, используя событие RowDataBound для GridView. ( http://www.highoncoding.com/Articles/169_DropDownList_Inside_GridView__Method_1_.aspx) Кто-нибудь может мне помочь, и подскажите, пожалуйста, как добавить обработку событий для выпадающего списка, пожалуйста?
5 ответов
Хорошо, проблема у меня решена. Обрабатывать SelectedIndexChanged
для DropDownList, вложенного в GridView, вы должны просто установить AutoPostback
собственность на true
и указать событие SelectedIndexChange на некоторую процедуру.
Причиной проблемы было то, что я не проверял в функции Page_Load (во время привязки данных к GridView) следующее правило: If Not Page.IsPostBack Then
, И это все. Так что не забудьте сделать это, пожалуйста!:)
В вашем GridView1_RowDataBound
метод, добавьте обработчик при создании раскрывающегося списка, вызвав ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
Затем объявите void ddl_SelectedIndexChanged(object sender, EventArgs e)
метод для обработки вашей логики. sender
Аргумент будет ссылкой на выпадающий, который был выбран.
Два события gridview используются для выпадающего списка, выбранный индекс изменен.
RowDataBount
обработчик событий вида сетки (для выбора элемента).RowUpdating
обработчик событий вида сетки (для обновления выбранного элемента в виде сетки).
Ответ был полезен.
У меня был похожий сценарий, где у меня был список товаров, которые нужно добавить в ассортимент товаров. Когда я выбрал продукт, мне нужно отобразить его единицу (кг / литр) в следующем столбце.
Для этого мне нужно найти точную строку в виде сетки, где присутствует выпадающий продукт. Таким образом, в событии selected_index_changed я проходил по каждой строке сетки и соответствовал выпадающему идентификатору.
Но проблема в том, что "id" выпадающего списка остается одинаковым во всех строках. Поэтому я добавил еще одно условие для сопоставления идентификатора клиента ddl с идентификатором клиента отправителя, и это сработало отлично.
Итак, подумал поделиться своим опытом.
Спасибо!
Добавьте событие onRowCommand в представление сетки, добавьте имя команды в раскрывающийся список, установите для его свойства autoPostback значение true, а в событии onRowCommand проверьте e.CommandName (в случае, если у вас есть другие события, представление сетки генерирует как подкачка страниц).