当我分配 AssociatedUpdatePanelId 时,当我选择状态时不会显示进度,但是当我将其留空时,它会显示进度。
这是 aspx 标记:
<div>
<asp:ListBox ID="lstStates" runat="server" AutoPostBack="True"
OnSelectedIndexChanged="lstStates_SelectedIndexChanged" SelectionMode="Multiple">
</asp:ListBox>
</div>
<div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Panel ID="pnlCounty" runat="server">
<asp:ListBox ID="lstCounties" runat="server" SelectionMode="Multiple">
</asp:ListBox>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="lstStates" EventName="SelectedIndexChanged" />
</Triggers>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress2" runat="server" DisplayAfter="1"
AssociatedUpdatePanelID="UpdatePanel1">
<ProgressTemplate>
<img src="../images/loader2.gif" />
Loading Counties...
</ProgressTemplate>
</asp:UpdateProgress>
</div>
最佳答案
根据this article ,UpdatePanel 的外部触发器不会触发关联的 UpdateProgress,因为启用 UpdateProgress 控件的实现会在控件层次结构中搜索调用控件;控制层次结构中不会出现外部触发器。
然而,这篇文章确实建议注入(inject)一些 JavaScript 来弥补这个错误。我已将其修改为(希望)满足您的需求:
<script type="text/JavaScript" language="JavaScript">
function pageLoad()
{
var manager = Sys.WebForms.PageRequestManager.getInstance();
manager.add_endRequest(endRequest);
manager.add_beginRequest(OnBeginRequest);
}
function OnBeginRequest(sender, args)
{
var postBackElement = args.get_postBackElement();
if (postBackElement.id == 'lstStates')
{
$get('UpdateProgress2').style.display = "block";
}
}
</script>
关于asp.net - 为什么在设置 AssociatedUpdatePanelId 时不会触发更新进度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/996957/