主要是动态生dropdownlist,及其事件后,我要通过动态生成的第一个dropdownlist的selectedIndexChange事件来过滤下一个dropdownlist控件的dataset
但是我的做法,new 出控件和事件后,是分不清楚是哪个控件的ID的事件
DropDownList AddDDL(int index)
{
TableRow tr = new TableRow();
TableCell tc = new TableCell();
TableCell tclbl = new TableCell(); System.Web.UI.WebControls.Label lbl = new System.Web.UI.WebControls.Label(); DropDownList ddl = new DropDownList();
ddl.Width = 100;
ddl.AutoPostBack = true;
ddl.ID = "DDL" + index.ToString();
ddl.SelectedIndexChanged += new EventHandler(DDL_Changed); tc.Controls.Add(ddl);
tr.Cells.Add(tc); tbl.Rows.Add(tr);
return ddl;
}
void DDL_Changed(Object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
if (ddl.ID == "DDL1")
{
Response.Write(String.Format("{0} is changed to {1}<BR>", ddl.ID, ddl.SelectedItem.Value));
}
}
这样写,判断ddl.id是第一个,怎么来过滤第二个控件,也就是通过第一个控件的条件来查数据库。不知道怎么走了。
或者有没有其它方法来做呢
求助
但是我的做法,new 出控件和事件后,是分不清楚是哪个控件的ID的事件
DropDownList AddDDL(int index)
{
TableRow tr = new TableRow();
TableCell tc = new TableCell();
TableCell tclbl = new TableCell(); System.Web.UI.WebControls.Label lbl = new System.Web.UI.WebControls.Label(); DropDownList ddl = new DropDownList();
ddl.Width = 100;
ddl.AutoPostBack = true;
ddl.ID = "DDL" + index.ToString();
ddl.SelectedIndexChanged += new EventHandler(DDL_Changed); tc.Controls.Add(ddl);
tr.Cells.Add(tc); tbl.Rows.Add(tr);
return ddl;
}
void DDL_Changed(Object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
if (ddl.ID == "DDL1")
{
Response.Write(String.Format("{0} is changed to {1}<BR>", ddl.ID, ddl.SelectedItem.Value));
}
}
这样写,判断ddl.id是第一个,怎么来过滤第二个控件,也就是通过第一个控件的条件来查数据库。不知道怎么走了。
或者有没有其它方法来做呢
求助
public static int index;然後事件裡如此調用:
void DDL_Changed(Object sender, EventArgs e)
{
DropDownList ddl = (DropDownList)sender;
//根據條件查詢SQL記錄集
string strSql = "select * from Table where XX='" + ddl.SelectedItem.Value + "'";
//生成DataReader
SqlConnection con=new SqlConnection("connectionStr");
con.Open();
SqlCommand cmd=new SqlCommand(strSql,con);
SqlDataReader dtr = cmd.ExecuteReader();
//產生下一個DropDownList的ID
DropDownList ddlNext = new DropDownList();
ddlNext.ID = "DDL" + index.ToString();
//綁定DropDownList
ddlNext.DataSource = dtr;
ddlNext.DataBind(); } 當然,在生成新的控件時要記得改變index的值
去掉index參數即可。
DropDownList AddDDL()
{
TableRow tr = new TableRow();
TableCell tc = new TableCell();
TableCell tclbl = new TableCell(); System.Web.UI.WebControls.Label lbl = new System.Web.UI.WebControls.Label(); DropDownList ddl = new DropDownList();
ddl.Width = 100;
ddl.AutoPostBack = true;
ddl.ID = "DDL" + index.ToString();
ddl.SelectedIndexChanged += new EventHandler(DDL_Changed); tc.Controls.Add(ddl);
tr.Cells.Add(tc); tbl.Rows.Add(tr);
return ddl;
}
主要是想一次性的从数据库查出要生成多少个控件,然后表现出来
其中会有事件过滤下一个控件的数据