Когда строка GRidView находится в режиме редактирования, текстовые поля не отображают текущие значения - PullRequest
0 голосов
/ 03 декабря 2009


1) Я заметил, что если мы не привязываем GridView к элементному управлению источником данных, то когда пользователь переводит GridView в режим редактирования, мы должны обработать событие GridView.RowEditing (иначе мы получим исключение) и в этом случае Строка GridView в режиме редактирования. Есть ли причина, по которой GridView не переводит строку автоматически в режим редактирования?


2) Когда мы вручную связываем GridView с одной из таблиц DataSet и пользователь переводит строку в режим редактирования, столбцы строки заменяют поля текстовыми полями. Но по некоторым причинам эти текстовые поля не отображают текущие значения полей, а вместо этого они вообще не отображают текст. Что я делаю не так?


3) Я также обработал событие gridView.RowUpdated, чтобы я мог вернуть строку в режим без редактирования, но безрезультатно. Я даже пытался нажать кнопку «Редактировать» какой-либо другой строки, но строка все равно не выходила бы из режима редактирования. Есть идеи, что я делаю не так?

protected void gvwEmployees_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
    e.KeepInEditMode = false; 
}


Thanx

1 Ответ

1 голос
/ 03 декабря 2009

Если элемент управления DataSource не используется с GridView или другим элементом управления с привязкой к данным, который скрывает сложность ручной привязки данных, вы должны вручную обрабатывать RowEditing, RowUpdating, RowDeleting и т. Д. Благодаря встроенной модели данных и автоматической привязке GridView обрабатывает эти события за вас.

Вы не опубликовали свой код RowEditing, но я подозреваю, что вы не устанавливаете GridViews EditIndex на NewEditIndex и не выполняете повторное связывание, возможно, именно поэтому вы не видите текущие данные.

protected void gvwEmployees_RowEditing(object sender, GridViewEditEventArgs e)
{
   GridView.EditIndex = e.NewEditINdex;
   BindData();
}

То же самое верно для вашего RowUpdating события. Вам придется вручную обновить ваши данные, а затем установить EditIndex в -1, это вернет ваш GridView обратно в режим ReadOnly. Имейте в виду, что свойства e.OldValues, e.NewValues и e.Keys GridViewUpdateEventArgs не заполняются при связывании вручную. Это означает, что вам придется самостоятельно позаботиться об обновлении, используя e.RowIndex, который является индексом отредактированной строки.

protected void gvwEmployees_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    GridView.EditIndex = -1;
    BindData();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...