updatepanel __dopostback命中.update()但不刷新

时间:2009-06-19 00:12:30

标签: updatepanel

我有一个包含两个更新面板的页面,每个面板都有一个动态生成的gridview。 Updatepanel1每十秒钟在计时器上刷新一次。在第一个网格中选择项目时,第二个更新/网格将刷新。

我正在尝试使用__doPostBack完成此专长。此方法到达服务器并在updatepanel2上运行我的.update。我看到updatepanel2获取数据,但表单实际上从未更新updatepanel2。

我可以让updatepanel2仅在updatepanel1计时器滴答时显示数据,并将updatepanel2模式设置为“Always”。

有人有什么建议吗?

由于

2 个答案:

答案 0 :(得分:1)

我解决了这个问题。我修改为使用以下方法进行doPostBack调用。

http://encosia.com/2007/07/13/easily-refresh-an-updatepanel-using-javascript/

希望这有帮助。

答案 1 :(得分:1)

我看到你回答了你自己的问题,但是为了别人的利益而不是doPostBack(),为什么不在Timer上设置以指定的间隔刷新,或者作为带有“UpdatePanel1.Update”的Tick事件方法()“在方法的最后?这样,您需要在Default.aspx页面代码本身中设置间隔;我选择了10毫秒,这样可以显示快速操作的进度:

<asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="360000" />
<asp:Button ID="btnDoSomething" runat="server" Text="Do Something" OnClick="btnDoSomething_Click" />
 <asp:UpdatePanel ID="UpdatePanel1" runat="server" OnLoad="UpdatePanel1_Load" UpdateMode="conditional"> 
    <ContentTemplate>
        <span id="spnLabel" runat="server">
        <asp:Timer ID="Timer1" runat="server" Interval="10" OnTick="Timer1_Tick"></asp:Timer> 
    </ContentTemplate>         
    <Triggers >
        <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
    </Triggers>
 </asp:UpdatePanel> 

然后在你有更新时调用的代码隐藏中有一个Timer1_Tick方法 - 在这个例子中,要从btnDoSomething_Click()方法添加到spnLabel.InnerHtml:

protected void btnDoSomething_Click(object sender, EventArgs e)
{
     Timer1.Enabled = true;
     Timer1.Interval = 10;
     Timer1_Tick(sender, e);
     Timer1.Enabled = false;
}
protected void Timer1_Tick(object sender, EventArgs e)
{
     spnLabel.InnerHtml = "hi";
     UpdatePanel1.Update();
}

请记住,刷新由Timer间隔控制,而不是在您调用Timer1_Tick(sender,e)时控制,即使您最后有一个UpdatePanel1.Update() - 例如,如果您将间隔设置为10000,它将在10秒后更新,即使您的操作在此之前已多次使用Timer1_Tick()方法。无论如何,你仍然需要最后的UpdatePanel1.Update()。

- 汤姆