题:
为什么在初始页面加载期间我的UpdateProgress不显示,但是通过单击按钮在随后的回发中却没有显示?
我设法做到这一点的唯一方法是使用计时器,我并不热衷。还有另一种方法吗?
有人可以解释为什么doSearch()
通过单击按钮使updateprogress起作用,但是通过docoment ready在页面加载时不起作用吗?
码:
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
}
}
最佳答案
可能是jQuery库干扰MS AJAX库的某种方式。尝试强制其显示:
<script>
$(document).ready(function() {
$('#<%= UpdateProgress1.ClientID %>').show();
doSearch();
});
function doSearch() {
$('#<%= UpdatePanel1Trigger.ClientID %>').click();
return false;
}
</script>
作为替代,jQuery的
$(document).ready
尝试使用MS方法:<script>
Sys.Application.add_load(doSearch);
function doSearch() {
$('#<%= UpdatePanel1Trigger.ClientID %>').click();
return false;
}
</script>