Из-за изменения порядка выписок требуются два постбэка вместо одного, прежде чем… - PullRequest
1 голос
/ 04 декабря 2009

Если у нас есть следующий код, то когда пользователь нажимает кнопку «Изменить», страница отправляется обратно и переводится в режим редактирования:

protected void gvwEmployees_RowEditing(object sender, GridViewEditEventArgs e)
{
    gvwEmployees.EditIndex = e.NewEditIndex;

    gvwEmployees.DataSource = ds.Tables["Employees"];

    gvwEmployees.DataBind();
}


Но с помощью следующего кода пользователь должен дважды нажать кнопку «Редактировать», прежде чем строка будет переведена в режим редактирования (таким образом, страницу необходимо дважды опубликовать, прежде чем строка перейдет в режим редактирования). Почему имеет значение, присваивается ли gvwEmployees.EditIndex значение до или после того, как мы привязали GridView к источнику данных?

protected void gvwEmployees_RowEditing(object sender, GridViewEditEventArgs e)
{
    gvwEmployees.DataSource = ds.Tables["Employees"];

    gvwEmployees.DataBind();

    gvwEmployees.EditIndex = e.NewEditIndex;
}


Спасибо

1 Ответ

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

Для изменения свойства EditIndex значением, отличным от того, которое у него уже есть, требуется, чтобы после изменения был вызван DataBind().

Как описано на странице документации GridView.EditIndex , это также может произойти, если EditIndex изменяется при других обстоятельствах:

Если вы установите свойство EditIndex после обратной передачи или в обработчиках для события, которые возникают позже, чем Загрузка события, элемент управления GridView может не войти в режим редактирования для указанного строка. Если вы прочитали значение этого свойство в других обработчиках событий, индекс не гарантированно отражает строка, которая редактируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...