gridview行中一列中加入dropdownlist,它的项是动态绑定的。选择完dropdownlist项,点击页面保存按钮(不是在gridview更新)时,却只能取到第一项的值???请高手来回答代码:<asp:TemplateField HeaderText="验收人员">
                                <ItemTemplate>
                                    <asp:DropDownList ID="rydrop" runat="server" Width="100px" >
                                    </asp:DropDownList>
                                </ItemTemplate>
                            </asp:TemplateField>
前台:(这时候绑定)
       protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                //gridview数据动态绑定略。
                //下面是dropdownlist绑定,也没问题。
                for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                {
                    DropDownList rydrop = (DropDownList)GridView1.Rows[i].FindControl("rydrop");
                    if (rydrop != null)
                    {
                        SqlDataAdapter myda = new SqlDataAdapter();
                        myda.SelectCommand = new SqlCommand("select name from uset where duty='仓管员'", sqlcon);
                        DataSet ds = new DataSet();
                        myda.Fill(ds, "uset");
                        DataTable dt = ds.Tables["uset"];                        DataRow temp = dt.NewRow();//添加一空项
                        temp["name"] = "aaaxxxxxx";
                        dt.Rows.InsertAt(temp, 0);                        rydrop.DataSource = dt;
                        rydrop.DataTextField = "name";
                        rydrop.DataValueField = "name";
                        rydrop.DataBind();
                    }
                }
            }
}
绑定完后在页面上放置一个BUTTON按钮,选择完GRIDVIEW的dropdownlist项后,点击按钮,可是读取不到dropdownlist选择值,一直只能读取第一个,即使dropdownlist项不是动态绑定,也是一样,不清楚为什么??求高手解决!!!

解决方案 »

  1.   

    <ItemTemplate>   
    <asp:DropDownList ID="ddlSort" runat="server" Width="98%">
      </asp:DropDownList>
     <asp:HiddenField ID="Hd_Sort" runat="server" Value='<%# Eval("BalSort")%>' />
    </ItemTemplate>
     protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
      {
      if (e.Row.RowIndex != -1)
      { if (e.Row.RowState == DataControlRowState.Edit || e.Row.RowState == (DataControlRowState.Alternate | DataControlRowState.Edit))
      {
      ((DropDownList)e.Row.FindControl("ddlSort")).SelectedValue = ((HiddenField)e.Row.FindControl("Hd_Sort")).Value;
      }
      }
      } protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
      {
      gv.EditIndex = e.NewEditIndex;
      string strSort = ((DropDownList)gv.Rows[e.NewEditIndex].FindControl("ddlSort")).SelectedValue.Trim();
      gv.EditIndex = -1;
      BindData();
      } 
      

  2.   

    下拉框的atocomplate要设置为true
      

  3.   

     
    wuyq11 
    (人生如梦)++
      

  4.   

    我说一下我的意思吧,我想在GRIDVIEW上面一列放dropdownlist,dropdownlist的项从数据库绑定。
    GRIDVIEW数据大概有几十行,对每一行的dropdownlist选择完项后,通过页面保存按钮一次保存dropdownlist选择的值。
    问题来了:当我点击保存的时候,保存的值都是dropdownlist第一项的值,无法得到我选择的值,而且点保存后dropdownlist显示的值也是第一项的值
      

  5.   

     //保存修改,这是我的按钮保存事件
            protected void LinkButton1_Click(object sender, EventArgs e)
            {
                    for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
                    {
                    DropDownList rydrop = GridView1.Rows[i].Cells[23].FindControl("rydrop") as DropDownList;
                     string ysry = rydrop.SelectedValue.ToString();                string upsql = "update reachview set ysry='" + rydrop.SelectedItem.Text + "' where id='" + GridView1.DataKeys[i].Value + "' ";                    SqlCommand sqlcom = new SqlCommand(upsql, sqlcon);
                        sqlcon.Open();
                        sqlcom.ExecuteNonQuery();
                        sqlcon.Close();
                    }
    }
      

  6.   

    //这个按钮事件取值。
      protected void LinkButton1_Click(object sender, EventArgs e)
      {
      for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
      {
      DropDownList rydrop = GridView1.Rows[i].Cells[23].FindControl("rydrop") as DropDownList;
       string ysry = rydrop.SelectedValue.ToString();  string upsql = "update reachview set ysry='" + rydrop.SelectedItem.Text + "' where id='" + GridView1.DataKeys[i].Value + "' ";  SqlCommand sqlcom = new SqlCommand(upsql, sqlcon);
      sqlcon.Open();
      sqlcom.ExecuteNonQuery();
      sqlcon.Close();
      }
    }