1. 程式人生 > >ASP.NET兩級聯動下拉框

ASP.NET兩級聯動下拉框

  介紹一個剛做的例子吧!

  使用者在提出問題時需要選擇物件機構,而物件機構的分類在一個叫做category的表中儲存。下面介紹一下使用者從分類下拉框中選擇分類後出現機構下拉框。

  前臺頁面中放置兩個下拉框:

分類:<asp:dropdownlist id="ddlCategoryid" runat="server" AutoPostBack="True">

</asp:dropdownlist>

AutoPostBack="True" 這個是關鍵,它的存在將會觸發機構下拉框的改變

機構:<asp:dropdownlist id="ddlorgid" runat="server"></asp:dropdownlist>

  後臺頁面程式碼:

//繫結機構類別資訊

if(!this.Page.IsPostBack)

{
    DataTable dtCategory = new DataTable(); //新建DataTable用來儲存從資料庫中取到的資料
    CategoryDao cDao = new CategoryDao(); //這裡是我用的一個構架,對一個數據庫操作類的例項化,以及使用該類的一個方法,不用此方法的朋友可以自己寫連線資料庫的語句。
    dtCategory = cDao.GetCategoryTable(9,true); //檢索資料庫操作,將檢索的資料儲存到DataTable例項中。
    ddlCategoryid.DataSource = dtCategory; //將資料繫結到分類下拉列表中
    ddlCategoryid.DataTextField = "categoryName";
    ddlCategoryid.DataValueField = "categoryID";
    ddlCategoryid.DataBind();

}

  在Web 窗體設計器中需要加入ddlCategoryid的SelectedIndexChanged事件

this.ddlCategoryid.SelectedIndexChanged += new System.EventHandler(this.ddlCategoryid_SelectedIndexChanged);

  接下來就是寫入SelectedIndexChanged事件的程式碼:

protected void ddlCategoryid_SelectedIndexChanged(object sender, EventArgs e) 
  {
   //繫結機構資訊
   DataTable dtOrg = new DataTable();
   OrganizationDao orgDao = new OrganizationDao();
   dtOrg = orgDao.GetRootOrganizationInfo(Convert.ToInt32(this.ddlCategoryid.SelectedValue.ToString()));
   ddlorgid.DataSource = dtOrg;
   ddlorgid.DataTextField = "orgname";
   ddlorgid.DataValueField = "orgid";
   ddlorgid.DataBind();
  }

  其中this.ddlCategoryid.SelectedValue就是選中的分類的程式碼。

  當然熟悉AJAX的朋友也可以用AJAX的方式實現,而且是不重新整理頁面(很酷),但是ajax 的實現是需要將所需要的下拉列表內容提前寫好的。將需要的資源從資料庫中取出來寫到一個頁面中(當然也可以寫到XML中),將該頁面引用後就可以實現AJAX的方式了,這個做法原來在用ASP的時候用過,需要從資料庫中把可能用到的資料全部提出來,寫起來很長,這裡就不多說了,感興趣的朋友可以告訴我,有時間把它翻出來給大家