成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET AJAX示例:下拉列表

開發(fā) 后端
本文提供了一個ASP.NET AJAX示例:下拉列表的實現(xiàn)。

ASP.NET AJAX示例:鏈接的下拉列表

本文的開始簡要地討論了用于鏈接兩個 DropDownList 的兩種傳統(tǒng)方法。當(dāng)選定的索引更改時,返回頁;或者將所有可能的數(shù)據(jù)加載到 JavaScript 數(shù)組并動態(tài)顯示。希望您可以看到 AJAX 如何替代這兩種解決方案。

首先,讓我們來看一下我們的數(shù)據(jù)界面,并從該數(shù)據(jù)界面驅(qū)動示例。我們的數(shù)據(jù)訪問層將提供兩種方法:***種方法將檢索系統(tǒng)支持的國家/地區(qū)的列表,第二種方法將獲取國家/地區(qū) ID 并返回州/省的列表。由于這是純數(shù)據(jù)訪問,因此我們只需要使用方法。

  1. //C#  
  2. public static DataTable GetShippingCountries();  
  3. public static DataView GetCountryStates(int countryId);  
  4. 'VB.NET  
  5. Public Shared Function GetShippingCountries() As DataTable  
  6. Public Shared Function GetCountryStates(ByVal countryId As Integer)  
  7. As DataView  

現(xiàn)在,讓我們轉(zhuǎn)到相反面,創(chuàng)建簡單的 Web 窗體。

  1. < asp:DropDownList ID="countries" Runat="server" /> 
  2. < asp:DropDownList ID="states" Runat="server" /> 
  3. < asp:Button ID="submit" Runat="server" Text="Submit" /> 

Page_Load 事件同樣簡單,和前述的 Web 窗體一樣。我們使用數(shù)據(jù)訪問層來檢索可用的國家/地區(qū),并將其綁定到 countriesDropDownList 中。

  1. //C#:ASP.NET AJAX示例  
  2. if (!Page.IsPostBack)  
  3. {  
  4. countries.DataSource = DAL.GetShippingCountries();  
  5. countries.DataTextField = "Country";  
  6. countries.DataValueField = "Id";  
  7. countries.DataBind();  
  8. countries.Items.Insert(0, new ListItem("Please Select""0"));  
  9. }  

通常,代碼到此為止。首先,我們將創(chuàng)建要從 JavaScript 調(diào)用的服務(wù)器端函數(shù)。

  1. 'VB.NET:ASP.NET AJAX示例  
  2. < Ajax.AjaxMethod()> _  
  3. Public Function GetStates (ByVal countryId As IntegerAs DataView  
  4. Return DAL.GetCountryStates(countryId)  
  5. End Function 

這與您通常使用的任何其他函數(shù)一樣:它需要我們想要獲得的國家/地區(qū)的 ID,并將該請求傳遞給 DAL。唯一的不同是我們已使用 AjaxMethodAttribute 標(biāo)記了該方法。***剩余的服務(wù)器端步驟是通過調(diào)用 RegisterTypeForAjax 使用 Ajax.NET 來注冊包含上述方法的類(在此情況下,是我們的下面的代碼)。

  1. //C#  
  2. Ajax.Utility.RegisterTypeForAjax(typeof(Sample));  
  1. 'VB.NET  
  2. Ajax.Utility.RegisterTypeForAjax(GetType(Sample))  

我們已基本完成;剩余的就是從 JavaScript 調(diào)用 GetStates 方法和處理響應(yīng)。當(dāng)用戶從國家/地區(qū)列表中選擇新項時,我們想在邏輯上調(diào)用 GetStates。為此,我們將觸發(fā) JavaScript onChange 事件。這樣就稍微更改了我們的 Web 窗體代碼。

  1. < asp:DropDownList onChange="LoadStates(this)"   
  2. ID="countries" Runat="server" /> 

JavaScript LoadStates 函數(shù)將負(fù)責(zé)通過由 Ajax.NET 創(chuàng)建的代理發(fā)出異步請求。請記住,默認(rèn)情況下,Ajax.NET 創(chuàng)建的代理的格式為 < RegisteredTypeName>.< ServerSideMethodName>。在我們的示例中,將為 Sample.GetStates。我們還想傳入國家/地區(qū) ID 參數(shù)和完成服務(wù)器端函數(shù)后 Ajax.NET 應(yīng)調(diào)用的回調(diào)函數(shù)。

  1. //JavaScript:ASP.NET AJAX示例  
  2. function LoadStates(countries)  
  3. {  
  4. var countryId = countries.options[countries.selectedIndex].value;  
  5. Sample.GetStates(countryId, LoadStates_CallBack);  
  6. }  

***一個步驟是處理我們的 LoadStates_CallBack 函數(shù)中的響應(yīng)。Ajax.NET 最有用的功能大概是它支持很多 .NET 類型(我已經(jīng)多次提到這一點)。回顧一下返回 DataView 的服務(wù)端函數(shù)。JavaScript 知道 DataView 什么?什么也不知道,但是 JavaScript 是面向?qū)ο蟮恼Z言,而且 Ajax.NET 不只能夠創(chuàng)建與 .NET DataView 相似的對象,還能將該函數(shù)返回的值映射到 JavaScript 副本。您應(yīng)該記住 JavaScript DataView 只不過是實際 DataView 的副本,目前除了能夠遍歷行和訪問列值以外不支持其他更多功能(例如設(shè)置 RowFilter 或 Sort 屬性的功能)。

  1. function LoadStates_CallBack(response)  
  2. {  
  3. //如果服務(wù)器端代碼出現(xiàn)異常  
  4. if (response.error != null)  
  5.  {  
  6. //我們應(yīng)該能做得更好  
  7. alert(response.error);   
  8. return;  
  9.  }  
  10. var states = response.value;  
  11. //如果不是我們所希望的響應(yīng)  
  12. if (states == null || typeof(states) != "object")  
  13.  {  
  14. return;  
  15.  }  
  16. //獲得州下拉列表  
  17. var statesList = document.getElementById("states");  
  18. statesList.options.length = 0; //重置州下拉列表  
  19. //記住,其長度不是 JavaScript 中的 Length  
  20. for (var i = 0; i <  states.length; ++i)  
  21.  {  
  22. //如命名屬性一樣公開行的列  
  23. statesList.options[statesList.options.length] =  
  24. new Option(states[i].State, states[i].Id);  
  25.  }  
  26. }  

經(jīng)過一些錯誤檢查之后,前面的 JavaScript 獲得州下拉列表,遍歷響應(yīng)的值,并動態(tài)地將選項添加到該下拉列表中。代碼清晰、簡單并與 C# 和 Visual Basic .NET 非常相似。就我個人而言(作為基于服務(wù)器端變量創(chuàng)建了 JavaScript 數(shù)組并將它們鏈接在一起的開發(fā)人員),我還要一段時間才能相信它真的起作用了。

有一個可能不太明顯的主要問題。由于 DropDownList 是在 JavaScript 中動態(tài)創(chuàng)建的,因此它的項不屬于 ViewState,并且不被維護(hù)。這意味著按鈕的 OnClick 事件處理程序需要進(jìn)行一些額外的修改。

  1. 'VB.NET  
  2. Private Sub submit_Click(sender As Object, e As EventArgs)  
  3. Dim selectedStateId As String = Request.Form(states.UniqueID)  
  4. '應(yīng)進(jìn)行一些用戶驗證...  
  5. states.DataSource =  
  6. DAL.GetCountryStates(Convert.ToInt32(countries.SelectedIndex))  
  7. states.DataTextField = "State" 
  8. states.DataValueField = "Id" 
  9. states.DataBind()  
  10. states.SelectedIndex =   
  11. states.Items.IndexOf(states.Items.FindByValue(selectedStateId))  
  12. End Sub 

首先,我們不能使用 states.SelectedValue 屬性,而必須使用 Request.Form。其次,如果我們想向用戶重新顯示該列表,需要重新使用相同的數(shù)據(jù)訪問方法綁定州 DropDownList。***,必須以編程方式設(shè)置選定的值。

以上就是ASP.NET AJAX示例:鏈接的下拉列表的實現(xiàn)。

【編輯推薦】

  1. AJAX.NET安裝配置全指南
  2. Ajax.Net快速入門
  3. ASP.NET AJAX軟件下載
  4. ASP.NET之父強(qiáng)烈推薦:ASP.NET AJAX著作
  5. Asp.net Ajax控件之AutoComplete控件幾點淺析
責(zé)任編輯:yangsai 來源: MSDN
相關(guān)推薦

2009-08-07 16:27:59

ASP.NET AJA

2009-08-07 16:39:08

ASP.NET AJA

2009-07-22 16:05:34

ASP.NET AJA

2009-07-22 16:25:41

ASP.NET AJA

2009-07-24 13:41:15

ASP.NET AJA

2009-07-22 16:17:39

ASP.NET AJA

2009-07-22 16:11:43

ASP.NET AJA

2009-07-20 10:16:13

配置ASP.NET A

2009-07-29 13:50:26

UpdatePanelASP.NET

2009-07-22 15:58:52

ASP.NET AJA

2009-07-31 13:24:43

ASP.NET AJA

2009-07-28 09:02:32

asp.net aja

2009-07-20 17:39:36

WCF服務(wù)ASP.NET AJA

2009-07-20 13:54:31

ScriptManagASP.NET AJA

2009-07-29 15:53:22

ASP.NET AJA

2009-07-20 13:14:25

安裝ASP.NET A

2009-07-21 17:18:26

UpdateProgrASP.NET AJA

2009-07-31 10:34:41

ASP.NET抓取網(wǎng)頁

2009-07-24 13:08:40

AJAX技術(shù)ASP.NET

2009-07-24 17:43:35

循環(huán)引用ASP.NET AJA
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产欧美一区二区精品久导航 | 成人欧美一区二区三区黑人孕妇 | 中文字幕乱码一区二区三区 | 亚洲免费福利视频 | 国产91丝袜在线播放 | 在线成人av| 国产精品我不卡 | 国产精品久久久久久久午夜 | 国产成人综合一区二区三区 | 夜夜夜久久久 | av福利网| www.99re| 91正在播放 | 日韩精品一区二区三区久久 | 99精品免费久久久久久日本 | 亚洲另类春色偷拍在线观看 | 久www| 伊人久久一区二区 | 国产一区二区黑人欧美xxxx | 成人精品一区二区 | 天天色综 | 天天拍天天操 | h片在线看 | 91在线视频国产 | 在线观看免费观看在线91 | 日韩精品一区二区三区中文在线 | 99一区二区 | 美女一级毛片 | 亚洲社区在线 | www.精品国产 | 亚洲精品成人网 | 99热视 | 久久综合九九 | 成人精品鲁一区一区二区 | 亚洲精品久久久久久久久久久 | 国产精品国产a级 | 精品九九九| 麻豆亚洲| 四虎国产 | 黄色一级大片在线观看 | 亚洲www |