Чтобы редактировать данные в элементе управления DataGrid, используйте столбец «Редактировать, Обновить, Отмена» в «Столбце кнопок». Их можно установить как элемент управления DataGrid в генераторе свойств элемента
управления DataGrid (возьмите имя элемента управления dg1 в качестве имени). example ), в элементе управления dg1 на странице будет еще один столбец. Каждый элемент в этом столбце представляет собой кнопку LinkButton/Button с текстом «Изменить».
Если вы нажмете кнопку «Редактировать» в строке, строка перейдет в режим редактирования, кнопка «Изменить» заменяется кнопками «Обновить» и «Отмена», а все остальные вспомогательные столбцы данных, доступные только для чтения, в строка будет изменена на формат элемента управления TextBox, чтобы пользователи могли ее редактировать и изменять.
Когда пользователь изменяет данные столбца данных, не предназначенного только для чтения (в элементе управления TextBox), нажимает кнопку «Обновить», сохраняет новое значение (обычно в базе данных), нажимает кнопку «Отмена», строка «Выход» режим редактирования.
Чтобы добиться эффекта перехода в режим редактирования строки по нажатию кнопки «Редактировать», необходимо написать метод обработки события EditCommand dg1. Чтобы добиться эффекта сохранения нового значения по нажатию кнопки «Обновить», необходимо прописать метод обработки события UpdateCommand dg1. Для того, чтобы нажать кнопку «Отмена» для выхода из режима редактирования строки, необходимо отредактировать метод обработки события CancelCommand dg1
1) Метод обработки события dg1.EditCommand - войти в редактирование строки. режим
-------------------------------------------------- ----
Private void dg1_EditCommand (источник объекта, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dg1.EditItemIndex = e.Item.ItemIndex //Устанавливаем индекс редактируемого элемента;
Binddg1(); //Метод привязки данных к dg1. После установки редактируемого элемента требуется перепривязка dg1
}
-------------------------------------------------- -------
2) метод обработки события dg1.CancelCommand - выход из режима редактирования строки
-------------------------------------------------- -------
Private void dg_CancelCommand (источник объекта, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
dg1.EditItemIndex = e.Item.ItemIndex; //Индекс редактируемого элемента равен -1, что означает, что ни один элемент не редактируется.
bindg1(); //После сброса EditItemIndex необходимо перепривязать dg1
}
-------------------------------------------------- -------
3) Метод обработки события dg1.UpdateCommand - Сохранение обновленных значений. Чтобы сохранить обновленные значения, необходимо сначала получить эти новые значения со страницы. В методе обработки событий должны быть реализованы три основные функции:
Получите обновленные значения, обновите эти значения и выйдите из режима обновления строк.
Обычно данные, отображаемые в элементе управления DataGrid, получаются из таблицы базы данных, поэтому обновленное значение также необходимо сохранить в базе данных. Для выполнения обновления можно использовать оператор обновления Sql или хранимую процедуру.
Получение значений столбцов со страницы подряд в режиме редактирования требует некоторых хитростей. В качестве примера возьмем столбцы привязки:
Получите значение связанного столбца, доступного только для чтения: e.Item.Cells[индекс столбца].Text //Столбец справки, доступный только для чтения, находится в нередактируемом состоянии. Получите значение связанного столбца, не доступного только для чтения: ((TextBox)(e.Item. Cells[Column Index].Controls[0])).Text //В состоянии редактирования
столбец справки, доступный только для чтения, обычно является столбцом первичного ключа в таблице. Его значение столбца должно быть. используются в предложенииwhere оператора обновления. Обычно они не обновляются.
Пример кода:
-------------------------------------------------- --------
Private void DataGrid1_UpdateCommand (источник объекта, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
//Связанный столбец только для чтения, в нередактируемом состоянии
строка customerid = e.Item.Cells[1].Text;
//Связанный столбец, не предназначенный только для чтения, в состоянии редактирования
строка имя компании = ((TextBox)(e.Item.Cells[2].Controls[0])).Text;
string city = ((TextBox)(e.Item.Cells[3].Controls[0])).Text;
String strSql = "обновить набор клиентов, имя компании = '" + имя компании +
"',city = '" + город + "' где идентификатор клиента = '" + идентификатор клиента + "'";
ExecuteSql(strSql); //Выполняем оператор обновления для обновления
DataGrid1.EditItemIndex = -1 //Выходим из режима редактирования строки;
привязка1();
}