相信和我一樣,有很多同行都遇到主從dropdownlist互動的問題,比如選擇了縣,那么讓系統自動在dropdownlist2中列出該縣下屬的鄉名列表,而選了鄉后,再在dropdownlist3中列出該鄉下屬的村的列表,那么我以前的解決方法是重新Rill相應dropdownlist所綁定的dataset,這樣費事費資源,而且麻煩,其實我們可以用RowFilter來實現,下面是我的具體實現方法:
override protected void OnInit(EventArgs e) { // // CODEGEN: 該調用是 ASP.NET Web 窗體設計器所必需的。 // InitializeComponent(); base.OnInit(e); InitA(); }
//初始化dorpdownlist
DataSet Myds; //CConection 為我的自定義類;實現與數據庫的連接,其中有一屬性為cnn,為OleDbConnection. CConection Mycnn;
public void InitA() { Mycnn=new CConection(); string strSql; strSql="select 編號,名稱 from sys_county order by 編號"; OleDbDataAdapter MyoleAp=new OleDbDataAdapter(strSql,Mycnn.Cnn) ; Myds=new DataSet() ; MyoleAp.Fill(Myds,"sys_county"); this.DropDownList1.DataSource=Myds.Tables["sys_county"]; this.DropDownList1.DataValueField="編號"; this.DropDownList1.DataTextField="名稱"; this.DropDownList1.DataBind(); strSql="select 編號,名稱,所屬縣 from sys_town order by 編號"; MyoleAp.SelectCommand.CommandText=strSql; MyoleAp.Fill(Myds,"sys_town"); this.DropDownList2.DataSource=Myds.Tables["sys_town"]; this.DropDownList2.DataValueField="編號"; this.DropDownList2.DataTextField="名稱"; MyoleAp.Dispose(); }
//DropDownList1的changed改變dorpdownlist2的顯示值,
private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e) { Myds.Tables["sys_town"].DefaultView.RowFilter="所屬縣='" + this.DropDownList1.SelectedValue +"'"; this.DropDownList2.DataBind(); } [注意:]以上代碼在C#的webform下實現,dropdownlist1的autopostback必須為true.
|