GridView RowCommand - 检测页面刷新而不执行

时间:2011-06-07 07:57:49

标签: c# asp.net gridview

我有一个GridView,它有一个RowCommand事件,可以在点击时打开一个modalpopupextender。一个小问题是,如果用户打开并关闭一个modalpopup,然后刷新页面,弹出窗口会再次弹出 - 大概是因为刷新导致了RowCommand事件的重新启动。

如何检测到这一点并避免再次打开窗口?

编辑:我正在使用AJAX工具包,模式弹出窗口是客户端,但是从RowCommand事件中调用

2 个答案:

答案 0 :(得分:0)

如果重新加载再次触发rowcommand事件,则显示您正在使用get参数?通常,您必须跟踪来自/向客户端的响应,并单独决定每个响应,如何处理它。一种方法来实现这一目标:

在每个交付的页面中提供“页面交付计数器”。它在服务器端维护,并针对每个页面响应增加。 (现在,让多线程和可能重新启动工作进程的东西放在这里 - 这个答案只是为了演示一般方案。但考虑在每个用户群上管理计数器,即将它存储在用户的会话中,如果任何。)

将计数器注册到服务器上的集合中,并将其隐藏变量发送给客户端。如果有回发,请读取其计数器值并检查它是否属于之前已使用过的响应。这将标记您描述的情况(用户点击重新加载)。

答案 1 :(得分:0)

你在刷新或(F5)中的问题。所以你需要检测它是刷新还是正常回发..

尝试this

  window.onbeforeunload = function (evt) {
  var message = 'Are you sure you want to leave?';
  if (typeof evt == 'undefined') {
    evt = window.event;
  }
  if (evt) {
    evt.returnValue = message;
  }
  return message;
}

这将捕获刷新,允许您显示有关此内容的消息。


其他适合您的链接:

- asp.net problem with F5 after postback, cuz it does what it should

- C# validate repeat last PostBack when hit Refresh (F5)

- Detecting Refresh or Post back in ASP.NET