Событие GridView_RowCommand снова запускается при обновлении страницы - PullRequest
4 голосов
/ 28 января 2011

Я реализовал функцию редактирования строк GridView в своем приложении .net, используя <asp:CommandField. Я нажал кнопку «Обновить», чтобы сохранить запись после редактирования строки. Теперь, если я обновлю страницу или нажму F5, GridView_RowCommand снова запустится.

Как мы можем избежать этого. Существует ли какой-либо механизм, позволяющий определить, когда пользователь нажимает клавишу F5, ИЛИ обновить страницу. Есть ли какой-либо метод на стороне клиента или на стороне сервера.

Ответы [ 3 ]

5 голосов
/ 09 февраля 2011

Не совсем лучшее «техническое» решение вашей проблемы, но вы всегда можете просто сделать Response.Redirect(Request.RawUrl), когда закончите делать все, что вам нужно сделать в RowCommand

Как я уже сказал, это не лучшее "техническое" решение, но это решение

Dave

1 голос
/ 28 января 2011

Один из способов получить это - сохранить переменную сеанса, связанную с рассматриваемой страницей.В переменной сеанса вы сохраните какое-то перечисление состояния, ключ или строку, которые будут определять последнее выполненное действие.Вы даже можете использовать простой инкрементный счетчик, и если вы когда-нибудь получите счетчик обратной передачи, равный переменной сеанса, это будет означать обновление страницы, а не новое действие.

1 голос
/ 28 января 2011
Session["LastInsertedItem"] = null;
MyCustomObjType myCustomObject;
protected void Page_Load(object sender, EventArgs e)
{
    myCustomObject = Session["LastInsertedItem"] as MyCustomObjType;
}
void GridView_RowCommand(Object sender, GridViewCommandEventArgs e)
{
    If(myCustomObject == null || //!(compare your value with myCustomObject.field) )
    {
         // do your operations and save the values to myCustomObject and save that object back to Session.
    }
    else
    {
        // It is refreshed or same data is being insterted - don't know if second         option is possible in your case.
    }
}
...