protected void gridview1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            this.gridview1.EditIndex = e.NewEditIndex;
            DropDownList ddl = (DropDownList)this.gridview1.Rows[e.NewEditIndex].Cells[2].FindControl("ddlUpBigtype");
            ddl.DataSource = this.bllBig.GetBigtype("");  //未将对象引用设置到对象的实例。***这里报错是为什么啊??要怎么写啊这里?            ddl.DataValueField = "bigtypeid";
            ddl.DataTextField = "typename";
            ddl.DataBind();
            ddl.SelectedValue = this.gridview1.Rows[e.NewEditIndex].Cells[0].Text;
            Bind();
        }

解决方案 »

  1.   

    应该放在RowDataBound事件中
        protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {        if (e.Row.RowType == DataControlRowType.DataRow)
            {
                DropDownList ddl = (DropDownList)e.Row.Cells[2].FindControl("ddlUpBigtype");
                if(ddl!=null) 
                {   
                    ddl.DataValueField = "bigtypeid";
                    ddl.DataTextField = "typename";
                    ddl.DataBind();
                    ddl.SelectedValue = this.gridview1.Rows[e.NewEditIndex].Cells[0].Text;
                    Bind();
                }        }
        }
      

  2.   

    楼上正解.DropDownList ddl = (DropDownList)this.gridview1.Rows[e.NewEditIndex].Cells[2].FindControl("ddlUpBigtype");
     
    因为没有找到DropDownList类型,所以ddl为空,空的话当然就不能给他赋值了,我也经常遇到这种错误.也有可能是this.gridview1.Rows[e.NewEditIndex].Cells[2]这里没有DropDownList控件,Cells[2]表示GridView的第三列,看看是不是放错了.呵呵. protected void gridview1_RowEditing(object sender, GridViewEditEventArgs e)
            {
                this.gridview1.EditIndex = e.NewEditIndex;
           if(this.gridview1.Rows[e.NewEditIndex].Cells[2].FindControl("ddlUpBigtype")!="")
                {
                DropDownList ddl = (DropDownList)this.gridview1.Rows[e.NewEditIndex].Cells[2].FindControl("ddlUpBigtype");
                ddl.DataSource = this.bllBig.GetBigtype("");  //未将对象引用设置到对象的实例。***这里报错是为什么啊??要怎么写啊这里?            ddl.DataValueField = "bigtypeid";
                ddl.DataTextField = "typename";
                ddl.DataBind();
                ddl.SelectedValue = this.gridview1.Rows[e.NewEditIndex].Cells[0].Text;
                }//就不会出错了
                Bind();
            }
      

  3.   


    ddl.SelectedValue = this.gridview1.Rows[e.NewEditIndex].Cells[0].Text;
    //GridView1_RowDataBound里面没有e.NewEditIndex,我要怎么获取默认值呢
      

  4.   


    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
        {         if (e.Row.RowType == DataControlRowType.DataRow) 
            { 
                DropDownList ddl = (DropDownList)e.Row.Cells[2].FindControl("ddlUpBigtype"); 
                if(ddl!=null) 
                {  
                    ddl.DataValueField = "bigtypeid"; 
                    ddl.DataTextField = "typename"; 
                    ddl.DataBind(); 
                    ddl.SelectedValue = this.gridview1.Rows[e.NewEditIndex].Cells[0].Text; //一楼的这里有问题啊
                    Bind(); 
                } 
            } 
        }
    我点编辑按钮后,里面的DropDownList 绑定后默认是选中的第一个值,我要怎么让他默认选择的是我点编辑的时候传过来的值