题:
为什么在初始页面加载期间我的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>

09-29 20:47