我想我已经尝试了与更新面板可能的每一个组合,我似乎无法得到这个工作。我有一个更新面板,像这样:嵌套的更新面板导致父更新面板刷新
<asp:UpdatePanel runat="server" ID="upParent" UpdateMode="Conditional" ChildrenAsTriggers="False">
<ContentTemplate>
Some content...
<div style="width:100%;text-align:center;">
<asp:Label ID="lblMainMessage" runat="server"></asp:Label>
<asp:UpdateProgress AssociatedUpdatePanelID="upParent" ID="UpdateProgress7" runat="server" DisplayAfter="100" DynamicLayout="True" Visible="True">
<ProgressTemplate>
<div class="loader ui-widget-overlay">
Loading data, please wait...<br/><img style="border-style:none;" src="../../Images/ajax-loader.gif" alt="loading" />
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</div>
<div>
<asp:UpdatePanel runat="server" ID="upChild" UpdateMode="Conditional" ChildrenAsTriggers="False">
<ContentTemplate>
<asp:Timer ID="timerChecklists" runat="server" OnTick="TimerChecklistsTick" Interval="10000"></asp:Timer>
<asp:GridView ID="gvChecklists" runat="server"
AutoGenerateColumns="False" >
<Columns>
<ItemTemplate>
<asp:TemplateField HeaderText="Ques. Ans. Yes">
<ItemTemplate>
<asp:Label ID="lblQuestionsAnsweredYes" runat="server" ForeColor="Green"
Text='<%# DataBinder.Eval(Container, "DataItem.QuestionYesAnswered") %>'
ToolTip="Questions answered Yes."></asp:Label>
</ItemTemplate>
<FooterStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Ques. Ans. No">
<ItemTemplate>
<asp:Label ID="lblQuestionsAnsweredNo" runat="server" ForeColor="Red"
Text='<%# DataBinder.Eval(Container, "DataItem.QuestionNoAnswered") %>'
ToolTip="Questions answered No."></asp:Label>
</ItemTemplate>
<FooterStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Ques. Ans. N/A">
<ItemTemplate>
<asp:Label ID="lblQuestionsAnsweredNA" runat="server" ForeColor="Gray"
Text='<%# DataBinder.Eval(Container, "DataItem.QuestionNAAnswered") %>'
ToolTip="Questions answered N/A."></asp:Label>
</ItemTemplate>
<FooterStyle HorizontalAlign="Center" />
<HeaderStyle HorizontalAlign="Center" />
<ItemStyle HorizontalAlign="Center" />
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Image ID="imgLoader" runat="server" ImageUrl="/Images/ajax-loader.gif" />
</td>
</tr>
</table>
</div>
<div style="width:100%;text-align:center;">
<asp:Label ID="lblspChecklists2" runat="server"></asp:Label>
</div>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnChecklistExcel"/>
<asp:AsyncPostBackTrigger ControlID="timerChecklists" />
</Triggers>
</asp:UpdatePanel>
我所要完成的是一些gridview的数据进行排序延迟加载的,由于它的大小。所以我只是在更新面板中包装gridview。然后,我在这个更新面板中放置一个计时器,并将其设置为10000(10秒)作为tick事件。我设置的事件OnTick如图所示:
protected void TimerChecklistsTick(object sender, EventArgs e)
{
LoadChecklistsSubPanel();
timerChecklists.Enabled = false;
imgLoader.Visible = false;
}
的LoadChecklistsSubPanel只是获取的数据集,并将其分配到网格视图的数据源,并做了数据绑定。这一切工作正常......但我的问题如下:
注意如上所述的父更新面板和子更新面板。在这里我有更新进度关联到更新面板upParent。但我的问题是,当10秒命中和计时器事件被触发时,显示updateprogress(实际上导致我的整个页面基本上加载)。我会认为这不会发生,因为updatemode是条件,孩子作为触发器是错误的。
我也试过ChildrenAsTriggers = true,我试图使更新面板模式总是,我已经尝试了一切,但我的问题仍然存在。当10秒钟点击UpdateProgress(显示加载数据,请等待覆盖显示。)
除此之外,我的网格视图正确绑定,其获取其数据10秒后,等我唯一的问题是我似乎无法理解为什么UpdateProgress显示并覆盖我的整个屏幕,如果发生的只是我的嵌套子面板应该只是更新
你有没有试过这个: - > http://msdn.microsoft.com/en-us/library/system.web.ui.updatepanel.childrenastriggers(v=vs.110).aspx –
Louis van Tonder - did你看我的帖子?我提到'我也尝试过ChildrenAsTriggers = true,我试图使更新面板模式始终,我已经尝试过几乎所有,但我的问题仍然存在。' – JonH
对不起。不知道我怎么错过了。 –