1. 程式人生 > >Asp.net-UpdatePanel非同步重新整理後JS失效的解決方法

Asp.net-UpdatePanel非同步重新整理後JS失效的解決方法

UpdatePanel非同步重新整理要用到的幾個控制元件:

1.ScriptManager

2.UpdatePanel

3.UpdateProgress


使用以上幾個控制元件實現非同步重新整理:
 

<form id="form1" runat="server"> 

<!--使用ScriptManger生成非同步指令碼-->         
<asp:ScriptManager ID="ScriptManager1" runat="server">    
</asp:ScriptManager> 
<!--使用UpdateProgress顯示非同步重新整理的等待效果-->   
 <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="up3NetSort">
        <ProgressTemplate>
            <div class="cls_process">
                <div class="cls_processing">
                </div>
            </div>
        </ProgressTemplate>
    </asp:UpdateProgress>
 <!--使用UpdatePanel執行非同步重新整理-->
        <asp:UpdatePanel ID="up3NetSort" runat="server" UpdateMode="Always">
  <!--UpdatePanel執行非同步重新整理的內容-->
                  <ContentTemplate>
        <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" id="tbMain">
            <tr>
                <td height="30px">
                    <table width="100%" border="0" cellspacing="0" cellpadding="0" style="height: 30px">
                        <tr>
                            <td background="images/tab_05.gif" style="width: 15%">
                                <img src="images/311.gif" width="16" height="16" /> 
                           </td>                            <td background="images/tab_05.gif" style="width: 75%">                                <table border="0" cellpadding="0" cellspacing="0">
                                    <tr>
                                        <td style="padding-left: 50px">
                                            <div style="height: 20px; border: 1px solid #AACFE9; font-size: 12px; color: #294F76;                                                padding-top: 3px; font-weight: normal">
                                                地理維度:
                                                <asp:RadioButtonList ID="PMTypeList" runat="server" AutoPostBack="True" 
						     RepeatDirection="Horizontal" RepeatLayout="Flow" 
						OnSelectedIndexChanged="PMTypeList_SelectedIndexChanged">                                                     				<asp:ListItem Value="1" Selected="True">網格</asp:ListItem>                                                    			<asp:ListItem Value="5">片區</asp:ListItem>                                                     					<asp:ListItem Value="2">地市</asp:ListItem>                                                                              </asp:RadioButtonList>
                                                   指標型別:
                                                <asp:RadioButtonList ID="IndicatorsList" runat="server" AutoPostBack="True" 
							RepeatDirection="Horizontal"   RepeatLayout="Flow" 
							OnSelectedIndexChanged="IndicatorsList_SelectedIndexChanged">                                                		</asp:RadioButtonList>
                                            </div>
                                    	 </tr>
                                </table>
                            </td>
                            <td background="images/tab_05.gif">
                                                       </td>
                            <td width="14">
                                <img src="images/tab_07.gif" width="14" height="30" />
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
    </ContentTemplate>
</asp:UpdatePanel>
</form>

解決非同步重新整理後js失效的2種方法:

1.後臺重新註冊JS方法
 ScriptManager.RegisterStartupScript(Page, typeof(string), "Sort", "Fun_Sort();", true);
Fun_Sort()為要前臺重新註冊的js方法。


2.使用Sys.WebForms.PageRequestManager 類重新註冊方法

前臺使用Sys.WebForms.PageRequestManager 類:

function EndRequestHandler()
{
 //重新整理之後要執行的js
}
function reload()
{
     //非同步重新整理後要執行的動作 Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}
//在jquery的ready()中註冊方法$(document).ready(
 function()
 {
      reload();
 }
)