关于Dropdownlist 与 autopostBack 问题-多级联动 例 省/市/区
1、Dropdownlist与数据库绑定。
string sql_subject="select subject from tt_subject";
OleDbConnection Conn=db.okConn();
Conn.Open();
OleDbCommand cmd = new OleDbCommand(sql_subject, Conn); //这里从数据库中读入到Dropdownlist
OleDbDataReader reader = cmd.ExecuteReader();
Dropdownlist9.DataSource = reader;
Dropdownlist9 .DataTextField ="subject";//字段
Dropdownlist9.DataValueField = "subject";
Dropdownlist9 .DataBind ();
2、多个Dropdownlist选定的联动:如 省 市 区的选择情况,就要联动
如果有两个Dropdownlist,在动态绑定数据的情况下,则第一个autopost为true;看另个Dropdownlist的联动例子,
pageload
{
if (!IsPostBack)
{
OleDbConnection conn = data.Acce_Conn();
conn.Open();
OleDbCommand cmd = new OleDbCommand("select distinct zhen from db",conn);//distinct表示不重复出现相同的数据,很好用的哦。可能有些数据重复,如一些学校是同一个镇的
OleDbDataReader reader = cmd.ExecuteReader();
zhen.DataSource = reader;
zhen.DataTextField = "zhen";
zhen.DataValueField = "zhen";
zhen.DataBind();
conn.Close();
ListItem default_selected = new ListItem(); //添加一个默认的"请选择"item,放在databind()后
default_selected.Text = "请选择";
default_selected .Value ="00";
default_selected .Selected =true ;
zhen.Items.Add(default_selected );
}
}
然后在zhen_SelectedIndexChanged事件中,再行绑定
protected void zhen_SelectedIndexChanged(object sender, EventArgs e)
{
OleDbConnection conn = data.Acce_Conn();
conn.Open();
OleDbCommand cmd2 = new OleDbCommand("select school from school_data where zhen='" + zhen.SelectedValue + "' ", conn);
OleDbDataReader reader2 = cmd2.ExecuteReader();
school.DataSource = reader2;
school.DataTextField = "school";
school.DataValueField = "school";
school.DataBind();
conn.Close();
}
这样就是最基本的联动了,省\市\区等情况类推.
3、如果有个控件如checkBox 设置了autopostBack ,每次checkBox 一选择,服务器就接受到autopostback返回的信息,但Dropdownlist的选择又是选默认的的第一个。则要保护好数据最好就是把绑定数据放在
if (!IsPostBack)
{}内,则,可以解决问题。原来的全局刷新,这里应称为局部刷新,不知道对不对。
总算问题解决了。应用实例:
Dropdownlist9 设置了autopostBack=true;
if (!IsPostBack)
{ db link
do something
}
string sql_db = "select * from data where sub='" + Dropdownlist9.SelectedValue + "'";
Label22.Text = dbcen.accessGetDataSet(sql_db).Tables[0].Rows.Count.ToString();
这样,就是联动了。Dropdownlist9选择,则Label22.Text 对应变化,把表中的符合条件的记录数目取出来。