在页面刷新时再次触发GridView_RowCommand事件

时间:2011-01-28 12:14:07

标签: asp.net gridview rowcommand

我使用<asp:CommandField在我的.net应用程序中实现了GridView行编辑功能。 我在编辑行后单击“更新”按钮保存记录。现在,如果我刷新页面或按F5 GridView_RowCommand再次触发。

我们如何避免这种情况。是否有任何机制可以识别用户何时按F5或刷新页面。客户端或服务器端是否存在任何方法。

3 个答案:

答案 0 :(得分:5)

对于您的问题而言,这不是最好的“技术”解决方案,但是一旦您完成了在RowCommand中执行的任何操作,您总是可以执行Response.Redirect(Request.RawUrl)

就像我说的那样,这不是最好的“技术”解决方案,但它是一个解决方案

戴夫

答案 1 :(得分:1)

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.
    }
}

答案 2 :(得分:1)

捕获此信息的一种方法是维护与相关页面相关的会话变量。在会话变量中,您将保留某种状态枚举,键或字符串,以确定最后执行的操作。您甚至可以使用一个简单的递增计数器,如果您收到的回调计数器等于会话变量,则表示页面刷新而不是新操作。