天天看點

UpdatePanel控件使用注意事項

使用UpdatePanel控件應注意以下兩個方面:

一、Rsponse.Write()是程式調試中的常見語句,但使用了UpdatePanel後,由于UpdatePanel中的控件觸發的是異步調用過程,使用它就會報JavaScript錯誤。(不能使用)

    解決辦法:

         System.Web.UI.ScriptManager.RegisterStartupScript(btnQuery,this.GetType(),"msg1","alert('js腳本')",true);

         通過System.Web.UI.ScriptManager類的靜态方法RegisterStartupScript向頁面注冊了頁面加載完成後便執行的JS代碼。

         public static void RegisterStartupScript(

                Control control,//正在注冊該用戶端腳本塊的控件

                Type type, //通常使用typeof運算符或GetType()擷取控件的類型

                string key, //該腳本塊的惟一辨別符

                string script,  //JavaScript内容

                bool addScriptTags //如果用<script></script>标記括起該腳本塊,則為true,否則為false

        )

二、UpdatePanel的Visible屬性要慎用

       一個頁面中如果有多個UpdatePanel,但是在程式中可能會通過其他控件來控制UpdatePanel控件的顯示與否,這時第一考慮到的就是使用UpdatePanel控件的Visible屬性,如果此屬性設定為false的話,UpdatePanle在Render成HTML代碼時,并不會生成相應的HTML代碼,也就是說,頁面HTML的DOM中根本就沒有這個UpdatePanel對應的對象。

        解決辦法,通過設定UpdatePanel控件的Style屬性,通過css中的display屬性間接實作,由于UpdatePanel沒有Style屬性,是以在每個UpdatePanel控件的外面加上一個Panel控件。

        <style type="css/text">

             .hidden

             {

                  display:none;

             }

             .show         

            {

                  display:block;

        </style>

       <asp:Panel ID="p1" runat="server">

             <asp:UpdatePanel ID="up1" runat="server">

                      <ContentTemplate>

                                 <asp:Label ID="Label1" runat="server" Text=""></asp:Label>

                      </ContentTemplate>

             </asp:UpdatePanel>

       </asp:Panel>

       <asp:Button ID="btnShow" runat="server" Text="顯示"></asp:Button>

       <asp:Button ID="btnHide" runat="server" Text="隐藏"></asp:Button>

在Page_Load事件中

               this.btnShow.OnClientClick = " $get(' " + this.p1.ClientID + " ').className = 'show' ; return false " ;

               this.btnHide.OnClientClick = " $get(' " + this.p1.ClientID + " ').className = 'hide' ;  return false ";

說明:$get()是ScriptManager控件向用戶端注冊的一個JavaScript方法,相當于document.getElementById()方法。

繼續閱讀