Gridview在点击编辑时,如何使编辑模板的DropDownList显示出正确地值?
我想在点击编辑按钮后,ddlsex下拉框能够显示出lbsex的值,这个怎么写?
也就是点击编辑按钮时,DropDownList能够初始化值
<asp:TemplateField HeaderText="性别">
  <EditItemTemplate>
  <asp:DropDownList ID="ddlSex" runat="server" Width="80%" >
  <asp:ListItem Value="0">保密</asp:ListItem>
  <asp:ListItem Value="1">男</asp:ListItem>
  <asp:ListItem Value="2">女</asp:ListItem>
  </asp:DropDownList>
  </EditItemTemplate>
  <ItemTemplate>
  <asp:Label ID="lbsex" runat="server" Text='<%# FormatSex(Eval("gender")) %>'></asp:Label>
  </ItemTemplate>
  </asp:TemplateField>  protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
  {
  GridView1.EditIndex = e.NewEditIndex;  string strsex = ((Label)GridView1.Rows[e.NewEditIndex].FindControl("lbsex")).Text;
  DropDownList list=(DropDownList)GridView1.Rows[e.NewEditIndex].FindControl("ddlSex");
  list.SelectedValue = strsex;
  BindData();
  }
我写的报错:未将对象引用设置到对象的实例
请问哪里错了?
该怎么写才是正确的?

解决方案 »

  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.   

    你这个不是在编辑模板里面的啊?
    我是说点击编辑的时候DropDownList就能够显示出所需要的值
      

  3.   

    方法一: 在數據綁定的時候就對相應dropdownlist 控件綁定值(在gv 的 rowdatabound 事件裏)
    方法二:在編輯按鈕的事件裏 給相應的 dropdownlist 綁定值
      

  4.   

    protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
      {
      gv.EditIndex = e.NewEditIndex;
      BindData();
    HiddenField hd=(HiddenField)gv.Row[e.NewEditIndex].FindControl("hdsex");
      DropDownList ddlsex= (DropDownList)gv.Rows[e.NewEditIndex].FindControl("ddlsex");
    ddlsex.SelectValue=hd.value;
      }试试这个,应该可行
      

  5.   

    我也想要达到这样的效果,但根据上面所说的方法,会报错。
    “未将对象引用设置到对象的实例。”
    这是什么原因呢,提问者找到解决的方法没啊。
    写了半天突然发现我们的问题相似,但我的dropdownlist 是要绑定到数据库,再从里面取出值。