使用C#中的Updatepanel和Timer进行延迟加载

时间:2011-03-25 10:33:24

标签: .net asp.net c#-4.0 asp.net-ajax

通过Timer加载updatepanel后,我无法从updatepanel发出任何异步请求。

示例aspx代码:

<asp:UpdatePanel runat="server" UpdateMode="Conditional">
<ContentTemplate>

    <%--The Timer that causes the partial postback--%>
    <asp:Timer runat="server" Interval="100" OnTick="Timer_Tick" Id="Timer1"/>                

    <asp:ImageButton ID="btnSaveEmployeePrevJobs" runat="server" ImageAlign="AbsBottom"
    ImageUrl="~/Images/saveOff.gif" onmouseout="this.src='../Images/saveOff.gif'"
    onmouseover="this.src='../Images/saveOn.gif'" OnClick="btnSaveEmployeePrevJobs_Click"/>

</ContentTemplate>

服务器端代码:

private void Timer_Tick(object sender, EventArgs args)
{
    Timer1.Enabled = false;
    //some code
}

protected void btnSaveEmployeePrevJobs_Click(object sender, EventArgs e)
{
    // some code
}
  

问题:无法引发点击事件   点击按钮,基本上是计时器   启用(不知道为什么)并调用它   本身再次,而不是呼叫点击   事件..

提前致谢..

3 个答案:

答案 0 :(得分:0)

我会使用jQuery代替,因为我认为100毫秒非常小,所以你的服务器端代码可能仍在加载并执行,在计时器滴答2次左右之后。

加载你的DOM,编写一个简单的jQuery函数来从你的服务器获取你的数据,把它填入你的页面,然后微笑:)

答案 1 :(得分:0)

您尝试过:

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

请注意,如果您要设置UpdateMode="Conditional",则需要明确调用UpdatePanel.Update();否则删除属性。

结帐:Tutorial: How to refresh an UpdatePanel control at a timed interval

答案 2 :(得分:0)

Atlast我解决了我的问题,这是viewstate(在会话中存储viewstate)和异步请求之间的冲突......它给了新的no。在回发上查看状态。

感谢您的时间......