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的時候用過,需要從資料庫中把可能用到的資料全部提出來,寫起來很長,這裡就不多說了,感興趣的朋友可以告訴我,有時間把它翻出來給大家