問題: 爲什麼我的UpdateProgress在初始頁面加載過程中不顯示,而是通過按鈕單擊進行後續回發?如何在asp.net初始頁面加載時觸發UpdateProgress
我設法得到這個工作的唯一方法是用一個計時器,我並不熱衷於此。有另一種方法嗎?
有人能解釋爲什麼doSearch()
會導致updateprogress通過按鈕點擊工作,而不是通過docoment準備好的頁面加載工作?
代碼:
的js處理程序:
<script>
$(document).ready(doSearch);
function doSearch() {
$('#<%= UpdatePanel1Trigger.ClientID %>').click();
return false;
}
</script>
ASPX:
//if i click this button the updateprogress works
//and the panel loads
<asp:Button ID="btnSearch" runat="server" Text="Search" CssClass="form-control"
OnClientClick="return doSearch();" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional"
OnLoad="UpdatePanel1_Load" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:Button ID="UpdatePanel1Trigger" runat="server"
style="display:none" OnClick="UpdatePanel1Trigger_Click" />
<%--gridview that takes a while to load--%>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server"
AssociatedUpdatePanelID="UpdatePanel1" DisplayAfter="1">
<ProgressTemplate>
<asp:Image ID="imgUpdateProgress1" runat="server"
ImageUrl="~/Images/spinner.gif" AlternateText="Loading ..." ToolTip="Loading ..."/>
</ProgressTemplate>
</asp:UpdateProgress>
代碼隱藏:
protected void UpdatePanel1Trigger_Click(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(m_search))
{
performSearch(); //loads data for gridview in updatepanel
}
}
謝謝您的回覆,第一種方法與我目前的方法相同(除非它顯示按鈕,直到面板加載)。第二個沒有加載任何東西(沒有點擊按鈕)。 –