代码如下,在rowdatabound事件中动态添加dropdownlist控件,但是用户选择变化以后,点保存,我再用
r = this.BulkEditGridView1.Rows[i].Controls[1];直接说超索引
r = this.BulkEditGridView1.Rows[i].Controls.Count; 看了一下control的数量为1,也就是说之前加入的control没有记录下来,请问各位怎么解决
protected void BulkEditGridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
       
        
        if (e.Row.RowIndex == -1)
        {
          ...
        }
        else
        {
            DataRowView drv = (DataRowView)e.Row.DataItem;
            DataTable dt = (DataTable)this.Session["code"];
            DropDownList dd = new DropDownList();
                       
                dd.DataSource = dt;
                dd.DataTextField = "code_name";
                dd.DataBind();
                dd.Visible = true;
                 
                e.Row.Cells[4].Controls[0].Visible = false;
                e.Row.Cells[4].Controls.Add(dd);
            }

解决方案 »

  1.   

    你试试给DropDownList设置DataValueField
      

  2.   

    RowCreated事件中写这段代码如何?
      

  3.   

    在Rowdatabound的时候是可以的,我现在的代码也是这样,
     if ((string)drv.Row.ItemArray[4] == "")
                    {
                        dd.SelectedIndex = 0;
                    }
                    else
                    {
                        string str = (string)drv.Row.ItemArray[4];
                        dd.SelectedIndex = int.Parse(str);// (int)drv.Row.ItemArray[4];
                    }
    可以设置SelectedIndex,也可以设置DataValueField,而且在这个时候e.Row.Cells[4].Controls.Count也是为2的,但是一点保存回去处理的时候就没有了
      

  4.   

    你是不是把EnableViewState设置成false了?