【问题标题】:GridView_RowCommand event fired again on page refresh页面刷新时再次触发 GridView_RowCommand 事件
【发布时间】:2011-06-17 05:13:26
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net gridview rowcommand


    【解决方案1】:

    不完全是解决您问题的最佳“技术”解决方案,但您可以在完成 RowCommand 中需要执行的任何操作后随时执行 Response.Redirect(Request.RawUrl)

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

    戴夫

    【讨论】:

    • 谢谢戴夫。这个解决方案真的对我有用。如果我在 RowCommand [ Me.Page.ClientScript.RegisterStartupScript(Me.GetType(), "k", "window. location.href=window.location.href", True) ] 即在我们刷新页面时执行 RowCommand 代码后,asp.net 进程将其视为 GET 请求,这就是为什么在刷新时没有弹出窗口要求重试或取消。好吧这个解决方案在我的情况下有效。非常感谢。
    • 这几乎是同一类事情,但通过你的 JavaScript 实现 - 很高兴它对你有用 :)
    【解决方案2】:

    捕获此问题的一种方法是维护与相关页面相关的会话变量。在会话变量中,您将保留某种状态枚举、键或字符串,它们将确定最后采取的行动。您甚至可以使用一个简单的递增计数器,如果您曾经收到一个等于会话变量的回发计数器,它将指示页面刷新而不是新操作。

    【讨论】:

      【解决方案3】:
      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.
          }
      }
      

      【讨论】:

      • 当我点击更新按钮和页面刷新时,我得到了 IsPostback = true。
      • 当我刷新页面时,我得到了 Ispostback = true 并再次保存了我在点击更新按钮时已经保存的数据。
      • 将对象与您最后插入的值保持在会话中,并检查它是否与最后插入的值相同。如果是这样,只需返回。我正在编辑我的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 2018-12-14
      • 2011-06-25
      相关资源
      最近更新 更多