Asp.net 为什么在设置AssociatedUpdatePanelId时更新进度不触发?

Asp.net 为什么在设置AssociatedUpdatePanelId时更新进度不触发?,asp.net,updatepanel,Asp.net,Updatepanel,当我分配AssociatedUpdatePanelId时,当我选择状态时,进度不会显示,但当我将其留空时,它会显示进度 以下是aspx标记: <div> <asp:ListBox ID="lstStates" runat="server" AutoPostBack="True" OnSelectedIndexChanged="lstStates_SelectedIndexChanged" SelectionMode="Multiple"> <

当我分配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>

正在加载县。。。
根据,UpdatePanel的外部触发器不会触发关联的UpdateProgress,因为启用UpdateProgress控件的实现会在控件层次结构中搜索调用控件;控制层次结构中不存在外部触发器

然而,本文确实建议注入一些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>

函数pageLoad()
{      
var manager=Sys.WebForms.PageRequestManager.getInstance();
经理。添加_endRequest(endRequest);
经理。添加_beginRequest(OnBeginRequest);
}
函数OnBeginRequest(发送方,参数)
{
var postBackElement=args.get_postBackElement();
if(postBackElement.id='lstStates')
{ 
$get('UpdateProgress2').style.display=“block”;
}
}

不要忘记

$get('UpdateProgress2').style.display = "block"; 
使用

$get('<%=UpdateProgress2.ClientID%>').style.display = "block";  
$get(“”).style.display=“block”;
由于.NET为控制器提供了自己的名称(实际上附加了“MainContent”或其他名称)