AsyncPostBackTimeout不更新updatepanel中的数据

时间:2014-03-10 04:58:24

标签: c# asp.net .net ajax visual-studio-2010

我想在更新面板内更新数据而不回发。

我在aspx上制作了以下代码:

<asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="30">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="upPanel" runat="server">
        <ContentTemplate>
            <asp:Label ID="lblCount" runat="server"></asp:Label>
        </ContentTemplate>
    </asp:UpdatePanel>

每隔半分钟更新一次标签,我在页面加载时编写了以下代码:

 protected void Page_Load(object sender, EventArgs e)
    {
        lblCount.Text = DateTime.Now.ToShortTimeString();
    }

但即使我给出

,它也不会更新标签
AsyncPostBackTimeout="30"
脚本管理器中的

我错了什么?

我想在更新面板内更新标签,而不是在特定时间间隔内回发。

修改

 <asp:UpdatePanel ID="upPanel" runat="server">
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
        </Triggers>
        <ContentTemplate>


            <asp:Label ID="lblCount" runat="server"></asp:Label>
        </ContentTemplate>.

    </asp:UpdatePanel>

2 个答案:

答案 0 :(得分:1)

您实际上没有使用异步触发器,要更新面板,您需要声明异步触发器。

请检查此网址 http://msdn.microsoft.com/en-us/library/system.web.ui.asyncpostbacktrigger(v=vs.110).aspx

更详细 http://www.asp.net/ajax/documentation/live/overview/UpdatePanelOverview.aspx

答案 1 :(得分:1)

要每30秒更新一次您的页面,您可以使用计时器:

<head runat="server">
<title></title>

<script runat="server" type="text/c#">
    protected void Timer1_Tick(object sender, EventArgs e)
    {
        lblCount.Text = "Panel refreshed at: " + DateTime.Now.ToLongTimeString();
    }
</script>

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="30">
    </asp:ScriptManager>
    <asp:Timer runat="server" id="Timer1" Interval="30000" OnTick="Timer1_Tick"></asp:Timer>
    <asp:UpdatePanel ID="upPanel" runat="server">
         <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
        </Triggers>
        <ContentTemplate>
            <asp:Label ID="lblCount" runat="server" Text="Page not refreshed yet."></asp:Label>
        </ContentTemplate>
    </asp:UpdatePanel>
</form>

@Nipun Ambastha建议添加AsyncPostBackTrigger触发器。

如果没有AsyncPostBackTrigger,则必须将计时器放在UpdatePanel

protected void Timer1_Tick(object sender, EventArgs e)
    {
        Label1.Text = "Panel refreshed at: " +
DateTime.Now.ToLongTimeString();
    }

<form id="form2" runat="server">
    <asp:ScriptManager runat="server" ID="ScriptManager2">
    </asp:ScriptManager>
    <asp:UpdatePanel runat="server" ID="UpdatePanel1">
        <ContentTemplate>
            <asp:Timer runat="server" ID="Timer2" Interval="30000" OnTick="Timer1_Tick"></asp:Timer>
            <asp:Label runat="server" Text="Page not refreshed yet." ID="Label1">
            </asp:Label>
        </ContentTemplate>
    </asp:UpdatePanel>
    <asp:Label runat="server" Text="Label" ID="Label3"></asp:Label>
</form>