首页 > 解决方案 > ASP.NET 每 10 秒触发一次来自 javascript 的 CallbackPanel 回调

问题描述

我试图每 10 秒在我的 WebFormUserControl 中使用 javascript 触发 CallbackPanel 的回调。

我可以使用 ASPxButton 和 ClientSideEvents 触发它,但我的目标是每 10 秒自动启动一次。
我的用户控制代码:

<dxcb:ASPxCallbackPanel ID="panel" runat="server" ClientInstanceName="panel" OnCallback="ASPxCallbackPanel1_Callback" Width="200px">
            <PanelCollection>
                <dxcb:PanelContent runat="server">
                    <dxcb:ASPxImage ID="ASPxImage1" runat="server" ImageUrl="~/Images/Image1.png" ShowLoadingImage="true"></dxcb:ASPxImage>
                </dxcb:PanelContent>
            </PanelCollection>
</dxcb:ASPxCallbackPanel>
 <dxcb:ASPxButton ID="ASPxButton1" runat="server" AutoPostBack="false" Text="ASPxButton">
            <ClientSideEvents Click="function(s, e) { panel.PerformCallback();  }" />
 </dxcb:ASPxButton>

我试着像这样每 10 秒触发一次:

<script type='text/javascript'>
setInterval(function () { panel.PerformCallback(); }, 10000);
</script>

有可能实现我的目标吗?
如果是这样,请提供一些有用的代码。谢谢 :)

标签: javascriptc#asp.netcallback

解决方案


您可以__doPostBack在传递 CallBackPanel 的 id 时使用。像这样:

<script type='text/javascript'>
    setInterval(function () {
        __doPostBack("<%= panel.ClientID %>", "PanelCalledBack");
    }, 10000);
</script>

PanelCalledBack然后检查您在面板OnLoad事件(如果有)或事件中传递的参数Page_Load

if (Request.Params.Get("__EVENTARGUMENT")?.Trim().IndexOf("PanelCalledBack") != -1)
{
    ASPxCallbackPanel1_Callback(panel, null);
}

推荐阅读