举个例子,现在没编辑前是这样的    
编辑后就变成这样了 
但是我写死了的是和否是可以的我贴我的代码protected void GridContent_RowEditing(object sender, GridViewEditEventArgs e)
    {
        string isCheckTxt = ((Label)GridContent.Rows[e.NewEditIndex].Cells[2].FindControl("Label3")).Text;
        //string infoTypeTxt = ((Label)GridContent.Rows[e.NewEditIndex].Cells[5].FindControl("Label2")).Text;
        //string policeTxt = ((Label)GridContent.Rows[e.NewEditIndex].Cells[7].FindControl("Label4")).Text;
        GridContent.EditIndex = e.NewEditIndex;
        bind();
        ((DropDownList)GridContent.Rows[e.NewEditIndex].Cells[2].FindControl("ddlCheck1")).SelectedValue = isCheckTxt;
        //((DropDownList)GridContent.Rows[e.NewEditIndex].Cells[5].FindControl("ddlType")).SelectedValue = infoTypeTxt;
        //((DropDownList)GridContent.Rows[e.NewEditIndex].Cells[7].FindControl("ddlPolice")).SelectedValue = policeTxt;
    }

解决方案 »

  1.   

    就是要编辑的时候要有dropdownlist啊,但是总是选择第一个值
      

  2.   

    我有做过这个案例.
    首先多添加一个空白项.
    private void ShowInfo(int SID)
        {
            Maticsoft.BLL.Qcountsum bll = new Maticsoft.BLL.Qcountsum();
            Maticsoft.Model.Qcountsum model = bll.GetModel(SID);        
            this.lblSID.Text = model.SID.ToString();
            this.txtsga01.SelectedValue = model.sga01;
            this.txtsga02.SelectedValue = model.sga02;
            //流水线
            DataView dv21 = new DataView(scanapmdt());
            dv21.RowFilter = ("parentcode='" + txtsga02.SelectedValue.ToString() + "'");
            txtsga03.DataSource = dv21;
            txtsga03.DataTextField = "cinvcname";
            txtsga03.DataValueField = "no";
            txtsga03.DataBind();
            this.txtsga03.SelectedValue = model.sga03;
            this.txtsga06.SelectedItem.Text = model.sga06;  //半成品加工点
            this.txtsga07.SelectedItem.Text = model.sga07;  //半成品加工点流水线
            this.txtsga51.Text = model.sga51.ToString();
            this.txtsga52.Text = model.sga52.ToString();
            this.txtsga91.Text = model.sga91.ToString();
            //生成检验工序
            DataTable dt = scanapmdt();
            DataView dv2 = new DataView(dt);
            dv2.RowFilter = ("parentcode='" + model.sga01 + "'");
            dv2.Sort = "no";
            txtgb01.DataSource = dv2;
            txtgb01.DataTextField = "cinvcname";
            txtgb01.DataValueField = "no";
            txtgb01.DataBind();
            //添加工序空白项        
            this.txtgb01.Items.Insert(0, new ListItem("", ""));
            this.txtgb01.SelectedIndex = 0;
        }
    然后在生成gridview的时候,循环添加
       private void forDropDownList()
        {
            foreach (GridViewRow gvr in GridView1.Rows)
            {
                Label lbid = (Label)gvr.FindControl("lbID");
                int ID = int.Parse(lbid.Text);
                Maticsoft.BLL.Qcountb bll = new Maticsoft.BLL.Qcountb();
                Maticsoft.Model.Qcountb model = bll.GetModel(ID);
                string gb05 = model.gb05;            
                DropDownList ddl = (DropDownList)gvr.FindControl("DropDownList2");
                ddl.Items.Insert(0, new ListItem("", ""));
                ddl.Items.Insert(1, new ListItem("", "1"));
                ddl.SelectedIndex = 0;
                ddl.SelectedItem.Text = gb05;
            }
        }
      

  3.   

    是的,gridview中的dropdownlist的值在编辑时就会总是选到第一个,而不是本身的值,我不知道怎么取id
      

  4.   

    这是什么啊,看不懂。。
    string isCheckTxt = ((Label)GridContent.Rows[e.NewEditIndex].Cells[2].FindControl("Label3")).Text;        string infoTypeTxt = ((Label)GridContent.Rows[e.NewEditIndex].Cells[5].FindControl("Label2")).Text;这条语句我要求出下面的Id,我写死了的3是没问题的
            //string policeTxt = ((Label)GridContent.Rows[e.NewEditIndex].Cells[7].FindControl("Label4")).Text;
            GridContent.EditIndex = e.NewEditIndex;
            bind();
            ((DropDownList)GridContent.Rows[e.NewEditIndex].Cells[2].FindControl("ddlCheck1")).SelectedValue = isCheckTxt;
            ((DropDownList)GridContent.Rows[e.NewEditIndex].Cells[5].FindControl("ddlType")).SelectedValue = "3";这条语句对应上面的第二行,3是求那个dropdownlist数值里的Id
            //((DropDownList)GridContent.Rows[e.NewEditIndex].Cells[7].FindControl("ddlPolice")).SelectedValue = policeTxt;
      

  5.   

    string isCheckTxt = ((Label)GridContent.Rows[e.NewEditIndex].Cells[2].FindControl("Label3")).Text;        string infoTypeTxt = ((Label)GridContent.Rows[e.NewEditIndex].Cells[5].FindControl("Label2")).Text;这条语句我要求出下面的Id,我写死了的3是没问题的
            //string policeTxt = ((Label)GridContent.Rows[e.NewEditIndex].Cells[7].FindControl("Label4")).Text;
            GridContent.EditIndex = e.NewEditIndex;
            bind();
            ((DropDownList)GridContent.Rows[e.NewEditIndex].Cells[2].FindControl("ddlCheck1")).SelectedValue = isCheckTxt;
            ((DropDownList)GridContent.Rows[e.NewEditIndex].Cells[5].FindControl("ddlType")).SelectedValue = "3";这条语句对应上面的第二行,3是求那个dropdownlist数值里的Id
            //((DropDownList)GridContent.Rows[e.NewEditIndex].Cells[7].FindControl("ddlPolice")).SelectedValue = policeTxt;中间这个,绑定的问题吧.
      

  6.   

    Refer this:
    http://www.cnblogs.com/insus/archive/2009/03/13/1411016.html
      

  7.   

    上一篇是视频,下面这篇是源程序,也有注解,不过是vb.net版本的。
    http://www.cnblogs.com/insus/archive/2011/03/28/1997458.html
      

  8.   

    不是绑定的问题,如果是的话,那么上面的是与否就不会成功,写死了的Id也不会显示,现在的问题就是当编辑时,dropdownlist变成了它绑定时的顺序,不再是我已经选择了的值,变成了第一个的值
      

  9.   

    您看下这个人的问题,我的问题和 他差不多
    比如有个学生原来是外语学院的 但是当点击编辑时 绑定过来的第一个学院却是软件学院 因为数据库里第一个数据是软件学院 我想让默认显示他原来的学院   也就是当点击编辑按钮时候  默认的值是外语学院  请问应该这么做
    还有个实例http://blog.csdn.net/loveheye/article/details/5868119 但我照着写都没成功