之前開發的一套系統中用到了大量的 checkboxList 控制元件,但是每次選定之后都會重繪整個頁面,用戶體驗很差,百度了之后查到這篇文章,嘗試了一下可以實作,所以轉載了過來,記錄一下,也給其他有相同困擾的朋友一個解決的辦法,
********************分割線********************
C#所有runat="server"的控制元件都會造成整個界面的重繪,如果想實作區域重繪,可以利用ajax,需要加入的控制元件有ScriptManager和UpdatePanel,可以實作只重繪UpdatePanel內的內容,
C#中已經將AJAX封裝到了一個控制元件中,可以很簡單的實作,使用方法有點類似panel:
例:在前臺aspx檔案中:
<body><form id="form1" runat="server"><asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager><br /><div style="text-align: center; color: Blue; font-size: larger">不需要重繪的內容</div><div style="text-align: center"><asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate><asp:DataList ID="DataList1" runat="server"></asp:DataList></ContentTemplate></asp:UpdatePanel><br /><br /><div id="divButton" style="text-align: center"></div></div></form></body>
其中 <asp:ScriptManager> 就是實作AJAX的控制元件,需添加在所有頁面內容的最上面,扔在最上面就行,標簽之間不用添加內容,<asp:UpdatePanel> 以</asp:UpdatePanel>結尾,在該區域內的重繪內容時,不會重繪整個頁面,標簽之間為區域重繪的內容,
后臺頁面,只需要按照原來的需要對datalist等進行相應的操作,不需要對<asp:ScriptManager >, <asp:UpdatePanel>進行操作,另外,<asp:ScriptManager >,<asp:UpdatePanel >在VS2008之后,可以在工具箱(ToolBox)中的AJAX Extensions 下找到,在VS2005中,需要安裝AJAX插件才能使用,
注意事項:
(1)ScriptManager要放在UpdatePanel的前面,
(2)UpdatePanel內的控制元件只能影響UpdatePanel內的控制元件,不能影響外面的控制元件,而外面的控制元件則可以影響UpdatePanel內的,
常見錯誤
(1)型別“System.Web.UI.UpdatePanel”不具有名為“DropDownList”的公共屬性
解決方法:其實原因很簡單,就是少了一個<ContentTemplate></ContentTemplate>
例:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager><asp:UpdatePanel ID="UpdatePanel1" runat="server"><asp:DropDownList ID="ddlUsed" runat="server"><asp:ListItem Text="百度" Value=https://www.cnblogs.com/kaizishu/p/"-1"></asp:ListItem><asp:ListItem Text="谷歌" Value=https://www.cnblogs.com/kaizishu/p/"0"></asp:ListItem><asp:ListItem Text="新浪" Value=https://www.cnblogs.com/kaizishu/p/"1"></asp:ListItem></asp:DropDownList></asp:UpdatePanel>
正確的如下:
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager><asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate><asp:DropDownList ID="ddlUsed" runat="server"><asp:ListItem Text="百度" Value=https://www.cnblogs.com/kaizishu/p/"-1"></asp:ListItem><asp:ListItem Text="谷歌" Value=https://www.cnblogs.com/kaizishu/p/"0"></asp:ListItem><asp:ListItem Text="新浪" Value=https://www.cnblogs.com/kaizishu/p/"1"></asp:ListItem></asp:DropDownList> </ContentTemplate> </asp:UpdatePanel>
(2)型別“ScriptManager”的控制元件“ScriptManager1”必須放在具有 runat=server 的表單標記內
錯誤原因:<asp:ScriptManager ID=“ScriptManager1” runat=“server”></asp:ScriptManager>這個內容必須放在<form>標記內,
————————————————
著作權宣告:本文為CSDN博主「用得到就留個贊GH」的原創文章,遵循 CC 4.0 BY-SA 著作權協議,轉載請附上原文出處鏈接及本宣告,
原文鏈接:https://blog.csdn.net/qq_43434300/article/details/100092123
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/12350.html
標籤:ASP.NET
