相信和我一樣,有很多同行都遇到主從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.