【问题标题】:Postback an UpdatePanel on application variable change回发关于应用程序变量更改的 UpdatePanel
【发布时间】:2016-04-06 16:10:20
【问题描述】:

我有一个多用户应用程序,当其中一个用户将应用程序变量的状态更改为 true 时,我需要刷新更新面板。

最好的方法是什么?

我尝试过使用计时器,但是在计时器滴答声中,所有页面都被回发了。

谢谢

-------编辑--------

感谢您的建议,我会尝试更好地解释我的问题。

我有一个大数据库,显示在绑定的网格视图中。大多数用户只读取数据,但有人可以编辑。更改立即显示给所有看到 GridView 的用户是非常重要的。我发现的最佳解决方案是定义一个应用程序变量,并且正在编辑的用户将此变量设置为 true。只有当应用程序变量为真时,所有其他用户才更新 GridView,否则他们什么都不做。

这是一个好的解决方案吗?

当应用程序变量更改其状态时,更新 GridView 的更好方法是什么?

【问题讨论】:

  • 如果没有具体的问题示例,我能提供的最好的方法是:除非您的事件处理逻辑与您的期望相冲突,否则更新面板确实应该“正常工作”。 Webforms 旨在呈现回发到服务器页面模型事件的完整表单。更新面板的目的是减少客户端和服务器之间的 http 数据量,并消除客户端上的整页刷新。更好的方法是对 web 服务的 js ajax 调用。
  • 确保所有会话都可以访问应用程序变量更改。尝试将其设为全局变量。看到这个答案:stackoverflow.com/a/4174604/2549384
  • @Don 感谢您的建议,这有助于我改进我的应用程序变量定义。
  • @Don 我的问题有点不同:当应用程序变量更改状态时,我不知道如何更新包含 gridview 的 UpdatePanel。请查看我在问题中的编辑...
  • 您还在为这个问题寻找解决方案吗?

标签: javascript c# asp.net vb.net webforms


【解决方案1】:

我会根据 Paul 的评论提出一个解决方案。

  • 您将 GridView 放入 UpdatePanel 并将其保留在那里。
  • 然后,“带外”,使用一些单独的通道(周期性 ajax 调用或使用某些特殊的 Web api 或浏览器内消息服务)客户端检查是否要更新。
  • 需要更新时,某些 javascript 会触发更新 更新面板。

这样,您就不会弄乱 WebForms 组件,并且有一个轻量级的更新检查机制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 2020-07-29
    • 2015-02-09
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    相关资源
    最近更新 更多