画面上的dropdownlist是通过模板动态添加上的。但是事件怎么都添加不上。麻烦各位高手指点一下,本论坛下有很多这样的例子,但是怎么试都不行。请详细说明一下,

解决方案 »

  1.   

    你添加上的dropdownlist 没添加事件..用模版列把.另外dropdownlist的ID 起个行号名字别重复了.
      

  2.   

     在Default.aspx.cs中的代码是:
    protected void Page_Init(object sender, EventArgs e) {        //DropDownList dropDownList = (DropDownList)e.Row.FindControl("drr");
            //dropDownList.AutoPostBack = true;
            SelectedindexChanged = new EventHandler(DropDownList_SelectedIndexChanged);
            string sqlstr = "select  id,skills from t_skills ";
            sqlcon = new SqlConnection(strCon);
            sqlcon.Open();
            SqlCommand cmd = new SqlCommand(sqlstr, sqlcon);
            SqlDataReader p_dr = cmd.ExecuteReader();        int index = 0;
            while (p_dr.Read())
            {
                index += 1;
                TemplateField customField = new TemplateField();
                customField.ShowHeader = true;
                customField.HeaderTemplate = new GridViewTemplate(DataControlRowType.Header, Convert.ToString(p_dr["skills"]));
                customField.ItemTemplate = new GridViewTemplate(DataControlRowType.DataRow, "", SelectedindexChanged, index);
                GridView2.Columns.Add(customField);
                //==========================end===============================
            }
        
        }
    protected void Page_Load(object sender, EventArgs e)
        {
            //DropDownList ddl;
            if (!IsPostBack)
            {
    GridView2.DataSource = CreateDataSource();
                GridView2.DataBind();
    }}
    模板中的代码:
     public void InstantiateIn(System.Web.UI.Control container)
        {
            switch (templateType)
            {
                case DataControlRowType.Header:
                    //Literal lc = new Literal();
                    //lc.Text = columnName;
                    //container.Controls.Add(lc);
                    Label p_text = new Label();
                    p_text.Width = 100;
                    p_text.BackColor = System.Drawing.Color.Silver;
                    p_text.Text = columnName;
                    container.Controls.Add(p_text);
                    break;
                case DataControlRowType.DataRow:
                  
                    DropDownList drr = new DropDownList();                drr.AutoPostBack = true;
                    drr.Width = 100;
                    drr.ID = "dropDownList" + p_index;
                    drr.AppendDataBoundItems = true;                SqlDataReader p_dr = ddlbind();
                    
                    while (p_dr.Read())
                    {
                        //drr.Items.Add(new ListItem(Convert.ToString(drr.ID), "b"));
                        drr.Items.Add(new ListItem(Convert.ToString(p_dr["class"]), "a"));
             
                    }
                    sqlcon.Close();
                    //drr.Items.Add(new ListItem("-----请选择------", ""));
                    //drr.Items.Add(new ListItem("AA", "a"));
                    //drr.Items.Add(new ListItem("BB", "b"));
                    //drr.Items.Add(new ListItem("CC", "c"));                //drr.SelectedIndexChanged += selectedIndexChanged;// 
                   // dropDownList.SelectedIndexChanged += selectedIndexChanged;
                    drr.SelectedIndexChanged += new EventHandler(dropDownList_SelectedIndexChanged);
                    container.Controls.Add(drr);
                    break;
                default:
                    break;
            }
        }
      

  3.   

    在模板中添加了dropdownlist的事件drr.SelectedIndexChanged += new EventHandler(dropDownList_SelectedIndexChanged);
    但是没什么反映
      

  4.   

    既然是模板列,你可以右键菜单选择编辑模板,选中控件,在事件窗口选择添加事件
    或者后台直接写事件执行的方法,前台代码中手写指定就可以了
    AutoPost属性设置为true
      

  5.   

    AutoPost属性设置为true  ..  直接添加事件