一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - ASP.NET Ajax級聯DropDownList實現代碼

ASP.NET Ajax級聯DropDownList實現代碼

2019-06-18 10:42腳本之家 ASP.NET教程

我想大家對Ajax已耳熟能詳。自web 2.0概念出現以后,提供更好的用戶體驗變得越來越重要。那么今天我來講解一下如何使用ASP.NET Ajax和web service構建無刷新級聯DropDownList(以下簡稱為級聯DDL)。完成的效果圖

ASP.NET Ajax級聯DropDownList實現代碼


了解級聯DDL 
那么考慮以下幾種常見情景: 
· 用戶注冊時需要選擇國家、省、市、地區等。 
· 用戶購買產品時選擇產品類別、產品名稱、產品型號。 
以上的例子有一些共同特點: 
· 上一級(如省)選擇后下一級(如市)才可以選擇。 
· 下一級的內容由上一級的內容決定。 
像這樣的一組DropDownList就是級聯DDL.常見的解決方法是將帶有層次的數據寫入XML,然后設置DropDownList的AutoPostBack屬性為"True"開啟自動回調,最后處理SelectedIndexChanged事件。這樣不僅十分麻煩,過多的頁面刷新會給用戶帶來反感。那么如何實現無刷新的級聯DropDownList呢? 
開始 
一、 創建XML數據文件 
比如,我想做用戶注冊時的省、市的級聯DDL, 那么首先建立以下XML文件。 

復制代碼代碼如下:


<?xmlversion="1.0"encoding="utf-8"?> 
<CityServiceSource> 
<areaname="中國"> 
<provinceID="1"provinceID="110000"name="北京市"> 
<cityCityID="110100"name="市轄區"> 
<PieceareaPieceareaID="110101"name="東城區" /> 
<PieceareaPieceareaID="110102"name="西城區" /> 
<PieceareaPieceareaID="110103"name="崇文區" /> 
<PieceareaPieceareaID="110104"name="宣武區" /> 
<PieceareaPieceareaID="110105"name="朝陽區" /> 
<PieceareaPieceareaID="110106"name="豐臺區" /> 
<PieceareaPieceareaID="110107"name="石景山區" /> 
<PieceareaPieceareaID="110108"name="海淀區" /> 
<PieceareaPieceareaID="110109"name="門頭溝區" /> 
<PieceareaPieceareaID="110111"name="房山區" /> 
<PieceareaPieceareaID="110112"name="通州區" /> 
<PieceareaPieceareaID="110113"name="順義區" /> 
<PieceareaPieceareaID="110114"name="昌平區" /> 
<PieceareaPieceareaID="110115"name="大興區" /> 
<PieceareaPieceareaID="110116"name="懷柔區" /> 
<PieceareaPieceareaID="110117"name="平谷區" /> 
</city> 
<cityCityID="110200"name="縣"> 
<PieceareaPieceareaID="110228"name="密云縣" /> 
<PieceareaPieceareaID="110229"name="延慶縣" /> 
</city> 
</province> 
</area> 
<areaname="英國"> 
</area> 
<areaname="美國"> 
</area> 
<areaname="日本"> 
</area> 
</CityServiceSource> 


二、 創建web service 
創建web service(如CityService.asmx) 

復制代碼代碼如下:


[WebService(Namespace = "http://tempuri.org/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.Web.Script.Services.ScriptService()] 
publicclassCityService : System.Web.Services.WebService 

privatestaticXmlDocument _document; // 用來讀取XML數據 
privatestaticobject _lock = newobject();// 多線程并發處理 
publicstaticXmlDocument Document 

get 

lock (_lock) 

if (_document == null) 

_document = newXmlDocument(); 
_document.Load(HttpContext.Current.Server.MapPath("~/App_Data/CityServiceSource.xml")); 


return _document; 


publicstaticstring[] Hierarchy 

get 

returnnewstring[] { "area", "province"};// XML數據的層次 


[WebMethod] //一會兒控件會自動調用的web method.這個函數不根據具體情況改變。 
public AjaxControlToolkit.CascadingDropDownNameValue[] GetDropDownContents(string knownCategoryValues, string category) 

StringDictionary knownCategoryValuesDictionary = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues); 
return AjaxControlToolkit.CascadingDropDown.QuerySimpleCascadingDropDownDocument(Document, Hierarchy, knownCategoryValuesDictionary, category); 


三、創建DLL控件 
如果沒有安裝Ajax Control Toolkit去下載并安裝(http://asp.net)。 
創建三個標準的DropDownList(默認命名為DropDownList1、DropDownList2、DropDownList3). 
然后在Ajax Control Toolkit中拖拽出三個CascadingDropDown控件,注意一個Extender只能對于一個標準控件。 

復制代碼代碼如下:


<ajaxToolkit:CascadingDropDownID="CascadingDropDown1"runat="server" 
ServiceMethod="GetDropDownContents" 
ServicePath="~/webservices/cityservice.asmx"TargetControlID="DropDownList1" 
Category="area"LoadingText="正在讀取..."PromptText="請選擇國家"> 
</ajaxToolkit:CascadingDropDown> 
<ajaxToolkit:CascadingDropDownID="CascadingDropDown2"runat="server" 
ParentControlID="DropDownList1"ServiceMethod="GetDropDownContentsPageMethod" 
TargetControlID="DropDownList2"Category="province"LoadingText="正在讀取..." 
PromptText="請選擇省"> 
</ajaxToolkit:CascadingDropDown> 
<ajaxToolkit:CascadingDropDownID="CascadingDropDown3"runat="server" 
ParentControlID="DropDownList2"ServiceMethod="GetDropDownContents" 
ServicePath="~/webservices/cityservice.asmx"TargetControlID="DropDownList3" 
Category="city"LoadingText="正在讀取..."PromptText="請選擇城市"> 
</ajaxToolkit:CascadingDropDown> 
<asp:UpdatePanelID="UpdatePanel1"runat="server"UpdateMode="Conditional"RenderMode="inline"> 
<Triggers> 
<asp:AsyncPostBackTriggerControlID="DropDownList3"EventName="SelectedIndexChanged"/> 
</Triggers> 
</asp:UpdatePanel>


在”.cs”文件中創建web method. 
[WebMethod] 
[System.Web.Script.Services.ScriptMethod] 
publicstaticCascadingDropDownNameValue[] GetDropDownContentsPageMethod(string knownCategoryValues, string category) 

returnnewCityService().GetDropDownContents(knownCategoryValues, category); 

下面分別對CascadingDropDown的各個屬性進行說明。 
ServiceMethod="GetDropDownContents" 調用的web method 
ServicePath="~/webservices/cityservice.asmx" web service地址 
TargetControlID="DropDownList1" 與其綁定的DropDownList控件的ID 
Category="area" 該級聯DDL的層次 
LoadingText="正在讀取..." 加載時顯示的文字 
PromptText="請選擇國家"> 未選擇時顯示的文字 
可以說Ajax在UE(User Experience)帶來了革命性的變化。異步的刷新模式大大改進了傳統“一步一刷新”的尷尬局面。由于本人修為尚淺,如有錯誤歡迎批評指證。 
by Kim 
2008/12/11

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美精品一区二区三区免费 | 夫妻性生活影院 | 唯美 清纯 另类 亚洲制服 | 91青青在线视频 | 亚洲精品αv一区二区三区 亚洲精品91大神在线观看 | 亚洲国产成人精品激情 | 日噜噜| 超碰97 | 水野朝阳厨房系列在线观看 | 色综合视频一区二区三区 | 久久精品国产亚洲AV麻豆欧美玲 | 门房秦大爷在线阅读 | 嫩草影院永久在线一二三四 | 亚洲AV永久无码精品老司机蜜桃 | 成人精品视频 成人影院 | 亚洲成综合人影院在院播放 | 国产青色 | 婚前试爱全集免费观看 | 小草观看免费高清视频 | 美女福利视频午夜在线 | 青草色视频 | 日韩精品一区二区三区老鸭窝 | 色色色色色色网 | 亚洲xxxxxhd奶水女人 | 亚洲嫩模吧粉嫩粉嫩冒白浆 | 天天色综合三 | www.午夜剧场| 国产91精品区 | 精品午夜中文字幕熟女人妻在线 | 欧美成人福利 | 欧美图片小说 | 99热国产这里只有精品99 | 俺去俺来也在线www色官网 | 久久草福利自拍视频在线观看 | 国产成人亚洲精品91专区高清 | 美女扒开尿口让男生添 漫画 | 成人看的羞羞视频免费观看 | 国产色婷婷亚洲 | 青青草成人在线观看 | 欧美日韩在线观看精品 | 亚洲成在人网站天堂一区二区 |