【问题标题】:Refresh MuliView's view every 5 seconds每 5 秒刷新一次 MuliView 的视图
【发布时间】:2011-02-01 15:17:07
【问题描述】:

在客户端 pageLoad() 函数中,我试图获取多视图活动索引并仅在活动索引为 2 时在 5 秒后回发到我的 updatepanel1

以下代码:

<script type="text/javascript" language="JavaScript">
    function pageLoad() {
       if (document.getElementById('MultiViewManage').getAttribute("ActiveViewIndex") == 2) {
          window.setTimeout("__doPostBack('UpdatePanel1','')",5000);
       }
   } 
</script>

我得到空异常或某种错误我做错了什么? 谢谢

【问题讨论】:

  • 您不能在客户端访问 MultiView,因为它被呈现为一个简单的 div。因此,您也无法访问属性(顺便说一句。存储此类属性的可怕地方)来获取 ActiveViewIndex。如果可能的话,你应该在服务器端做这一切。
  • 好的,感谢您的重播,那么我还有一个问题,当函数已经存在时,如何从服务器端注册 5 秒回发到 pageLoad()
  • @Python:澄清(在你的问题中)你真正想要实现的目标,因为它仍然不清楚。如果您的 MultiView 的 ActiveViewIndex 为 2,您希望在页面回发之前延迟 5 秒?如果是真的,这对我来说似乎很奇怪,难道没有更用户友好的方式来实现你想要的任何东西吗?
  • 我在更新面板中有一个多视图,我想每 5 秒刷新一次更新面板,但只有在特定视图处于活动状态时才能刷新
  • 我本可以使用 ajax 计时器,但我有一个奇怪的问题,回发它有时会卡住很多时间,即使我将计时器放在更新面板之外

标签: javascript asp.net updatepanel


【解决方案1】:

如果用户在 MultiView 的 ActiveViewIndex=2 上,要在 5 秒后自动刷新更新面板,请在 UpdatePanel 中使用 ASP.Net 计时器,该计时器每 5 秒触发一次异步回发。我会将应刷新的视图内容嵌入到单独的 UpdatePanel 中。

<asp:Timer ID="Timer1" OnTick="Timer1_Tick" runat="server" Interval="5000"></asp:Timer>
<asp:UpdatePanel ID="UpdPanelRefresh" UpdateMode="Conditional" runat="server">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
            </Triggers>
            <ContentTemplate>
.....

然后在代码隐藏的 Timer_Tick 事件处理程序中刷新 UpdatePanel 的内容。

我会将所有视图嵌入到外部 UpdatePanel 旁边的单独 UpdatePanel 中。如果切换视图,则必须触发外部 UpdatePanel。但是计时器滴答会触发属于 ActiveViewIndex 2 视图的内部 UpdatePanel

【讨论】:

    猜你喜欢
    • 2016-03-21
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    相关资源
    最近更新 更多