2011-08-10 73 views
1

下拉控制這個職位的日期我已經花了10種多染料,但沒能解決我的問題:(創建與阿賈克斯

我有它有3周的Fileds一個數據庫表位置LOCID,LOCNAME,locParent 。

我想創建一個DropDownList含有例如國家所有的主力位置。 然後當用戶選擇一個位置(例如國家) 在該國所有城市中動態創建的下拉列表中重新加載。

此頁面必須有無限的子類別秒。 解決方案也必須在AjaxC#

+0

確實使用'Ajax.Net'? –

回答

0

,您將需要AjaxExtensions(自帶.NET 3.5)可以被添加到.NET 2.0的應用程序http://www.asp.net/ajax

這將需要一個ToolKitScriptManager頁面

放置在網頁的三個下拉列表上。將它們命名爲ddlCountry,ddlCity和ddlMainLocation。

(可選)將兩個「子」下拉列表放置在設置爲不可見的面板中。

在頁面加載時,從拉使用SqlDataBase讀者

帶着讀者數據庫中的位置信息,通過記錄迭代,並添加項目到下拉

例如

// Create a command object and set it to run a stored procedure that gets the countries from the database 
SqlDataReader rdr = cmd.ExecuteQuery(); 
try 
{ 
    ddlCountries.items.clear(); 
    While (rdr.read()) 
    { 
     // Text to display, Common Data Item 
     ddlCountries.items.add(new ListItem(rdr("CountryName").toString(),rdr("CountryCode").ToString()); 
    } 
} 
catch() 
{ 
    // do something with your error 
} 

向該ddlCountries下拉列表添加以下屬性:

  1. OnSelectedINdexChanged = 「ddlCountries_SelectedIndexChanged」
  2. 的AutoPostBack = 「真」

(1)將在執行命令索引被更改 (2)將在更改項目時觸發回發

然後至210

的ddlCountries_SelectedIndexChanged事件方法將查詢屬於被選中的國家代碼相關的城市數據庫(或使價值爲包含城市表的外鍵)

現在測試代碼,使確保回帖後會在城市列表中填入數據。在這一點上,它是一個普通的ASP.Net頁面,帶有回傳。要在標記中完成部分回發,請在下拉列表中添加一個更新面板。它看起來像下面這樣:

<asp:UpdatePanel runat="server" id="upnlDropdowns" UpdateMode="Conditional"> 
         <Triggers> 
          <asp:AsyncPostBackTrigger ControlID="ddlCountries" EventName="OnSelectedIndexChanged" /> 
         </Triggers> 
<ContentTemplate> 
<!--... Your Drop downs and any code to be Ajaxified .../--> 
</ContentTemplate> 
</asp:UpdatePanel> 

再次測試並確保所有工作仍在進行。如果是這樣,那麼你可以添加第三個下拉菜單。這一次,它將被選中的城市下拉菜單中已更改的事件填充。

一旦它正常工作,您可以通過添加一個updateprogress來添加哇因子,它擴展了updatePanel以顯示工作映像。

祝你好運!

+0

如果這沒有意義,請添加評論,我會嘗試進一步解釋 – Feuerwehrmann

+0

謝謝Feuerwehrmann 但我想在後面的代碼中動態創建下拉列表。 我不想僅限於3個dropdwon列表。 – Mutken