добавление onCheckChanged в динамический флажок

#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. спасибо за комментарий, Юрли. Это заставило меня больше задуматься о том, что мне нужно было сделать