【发布时间】:2009-09-22 14:01:26
【问题描述】:
我在使用 javascript (jQuery) 更新 ASP:UpdatePanel 时遇到问题。这就是我所拥有的。
我正在使用隐藏按钮技巧,因为我似乎无法为 __doPostBack 技巧获取更新面板的 ClientID。
<asp:UpdatePanel runat="server" ID="pnlUpdate">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnUpdate" />
</Triggers>
<ContentTemplate>
<asp:UpdateProgress runat="server" AssociatedUpdatePanelID="pnlUpdate" DynamicLayout="false" DisplayAfter="100">
<ProgressTemplate>
<img alt="Laddar..." src="img/loader.gif" width="16" height="11"/>
</ProgressTemplate>
</asp:UpdateProgress>
<div style="display:none;">
<asp:Button runat="server" ID="btnUpdate" CommandName="Refresh" CommandArgument='<%# Eval("Id") %>'/>
</div>
<asp:Repeater runat="server" Id="rptrEnquiry">
...
</asp:Repeater>
<%= DateTime.Now.ToString() %>
<a href="javascript:jQuery('#<%= btnUpdate.ClientID %>').trigger('click')&&undefined;">Fire!</a>
</ContentTemplate>
</asp:UpdatePanel>
在处理 btnUpdate(在 GridView RowCommand 中)的代码隐藏中,当 btnUpdate 被按下时,rptrEnquiry 会被反弹。
如果我直接按下按钮(而不是隐藏),一切正常(显示 updateprogess 并更新日期和更新中继器。
但是,如果我单击触发链接并通过 javascript 触发按钮,则只会更新日期,但不会显示更新进度,并且不会反弹中继器。调试的时候可以看到反弹代码执行了,但是更新中没有效果。
【问题讨论】: