【问题标题】:GridView adds duplicate row on Page refreshGridView 在页面刷新时添加重复行
【发布时间】:2010-02-17 17:44:51
【问题描述】:

GridView 在页面刷新时添加重复行--

我有两种方法 1)bindgridview() 2) insertdata()

每当我通过 webform 插入数据并在 gridview 中显示数据时,当我刷新页面或再次按 f5 时,就会插入重复的记录,谁能告诉我解决方案是什么

pageload 事件或插入数据中的 if(!page.ispostback) 应该在哪里,谁能告诉我,

提前感谢

【问题讨论】:

标签: asp.net


【解决方案1】:

我过去使用的一个解决方案是添加一个时间戳来检查回发是否是刷新。我所做的是添加

Page_Load()
{
    ...
    Session["CurrentTime"] = Server.UrlEncode(DateTime.Now.ToString());
}

还有

protected override void OnPreRender(EventArgs e)
{
   ViewState["CurrentTime"] = Session["CurrentTime"];
}

然后,当调用 InsertData() 时,我会添加这样的检查

InsertData()
{
     if(ViewState["CurrentTime"].ToString() != Session["CurrentTime"].ToString())
         return;
}

编辑:我查看了代码,这是使其工作的正确方法。希望我有所帮助。

【讨论】:

  • @thinker07 如果您将答案标记为已接受,那就太好了,以便其他用户知道它有效(我也得到了我的快乐点 ;-))
  • @user242375 你应该接受这个答案,这样它就不会显示为未回答。
【解决方案2】:

我有另一种刷新方式。在您的 Page_Load() 方法中,执行以下操作:

GridViewname.Columns.Clear();

这对我有用,也适用于启用 AJAX 的页面。

【讨论】:

    【解决方案3】:

    如果您在 Page_Load 中调用函数 insertdata() 而没有 Postback 的条件,它总是运行该函数。

    最好在按钮点击事件上调用insertdata()函数。

    如果按钮是 gridview 的子按钮,那么您可以使用 gridview 的 RowCommand 事件来执行此操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-13
      • 2015-09-07
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 2012-10-20
      • 2011-09-09
      相关资源
      最近更新 更多