之前開發的一套系統中用到了大量的 checkboxList 控制項,但是每次選定之後都會刷新整個頁面,用戶體驗很差,百度了之後查到這篇文章,嘗試了一下可以實現,所以轉載了過來,記錄一下,也給其他有相同困擾的朋友一個解決的辦法。 ************************************* ...
之前開發的一套系統中用到了大量的 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="-1"></asp:ListItem> <asp:ListItem Text="谷歌" Value="0"></asp:ListItem> <asp:ListItem Text="新浪" Value="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="-1"></asp:ListItem> <asp:ListItem Text="谷歌" Value="0"></asp:ListItem> <asp:ListItem Text="新浪" Value="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