我想我已經嘗試了與更新面板可能的每一個組合,我似乎無法得到這個工作。我有一個更新面板,像這樣:嵌套的更新面板導致父更新面板刷新
<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
對不起。不知道我怎麼錯過了。 –