主要是动态生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是第一个,怎么来过滤第二个控件,也就是通过第一个控件的条件来查数据库。不知道怎么走了。
或者有没有其它方法来做呢
求助

解决方案 »

  1.   

    LZ可以先定義一個靜態變量保存下拉框的下標:
    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的值
      

  2.   

    楼上的,我想表现形式应该不怎么好,因为,我想把这些控件一起生成给别人去选择,如果是这样的话,选择了一项再new一个出来,位置也要重新计算
      

  3.   

    你的這裡不變啊,
    去掉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;
        }   
      

  4.   

    我有不定数个dropdownlist要产生啊,有点不明白你的意思
      

  5.   

    回上上楼,我的index是会自动加1的,代码没贴出来。
    主要是想一次性的从数据库查出要生成多少个控件,然后表现出来
    其中会有事件过滤下一个控件的数据