#asp.net
#asp.net
Вопрос:
Есть ли способ добавить функцию onCheckedChanged в динамический флажок. Эти флажки добавляются в gridview во время выполнения в зависимости от данных в gridview.
Спасибо всем
Ответ №1:
Да, вы можете найти элемент управления в строке события RowDataBound элемента управления GridView и подписаться на необходимое событие в codebehind.
void CustomersGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
{
if(e.Row.RowType == DataControlRowType.DataRow)
{
// Display the company name in italics.
((Checkbox)e.Row.FindControl("my_checkbox_id")).CheckedChanged = (sender, args) => {
// do something in handler
}
}
}
Ответ №2:
Динамические элементы управления поддерживают события, только если они создаются заново при каждой обратной передаче. Таким образом, единственным решением является непрерывная (при каждой обратной передаче) привязка данных к gridview. Если у вас есть код привязки gridview с помощью !Условие IsPostBack удалите его и проверьте после этого.
Кстати, имейте в виду, что если данные источника данных gridview будут изменены, каждый динамический элемент управления получит новое значение UniqueID, и события этих элементов управления не будут обрабатываться.
PS может быть, лучший подход — не добавлять элементы управления в строку динамически, а скорее устанавливать видимое значение свойства в зависимости от данных в DataItem. В этом случае у вас может быть несколько серверных элементов управления в ItemTemplate и показывать только один из них.
Комментарии:
1. спасибо за комментарий, Юрли. Это заставило меня больше задуматься о том, что мне нужно было сделать