我现在做的是在页面加载的时候,就绑定DropdownList,然后也可以更新,可是我想要的效果是加载的时候,显示的是一个label,点编辑的时候这列才显示DropdownList,我现在这个如果显示的时候是label就出错。请问怎么做,我的代码如下:
------------------------------------------
HTML
<asp:GridView ID="GridView1" runat="server" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowUpdating"GridView1_RowUpdating" OnRowEditing="GridView1_RowEditing" AutoGenerateColumns="False" DataKeyNames="EpId" OnRowDataBound="GridView1_RowDataBound">
  <Columns>
    <asp:TemplateField HeaderText="所属大类" SortExpression="goodsType">
      <EditItemTemplate>
     <asp:DropDownList ID="DropDownList1"runat="server"></asp:DropDownList>
      </EditItemTemplate>
      <ItemTemplate>
       <asp:DropDownList ID="DropDownList1"  runat="server"/>
       </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="操作" ShowHeader="False">
    <EditItemTemplate>
     <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update"Text="更新"></asp:LinkButton>
      <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel"
      Text="取消"></asp:LinkButton>
       </EditItemTemplate>
       <ItemTemplate>
       <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit"Text="编辑"></asp:LinkButton>
       </ItemTemplate>
       </asp:TemplateField>
       </Columns>
      </asp:GridView>
------------------------------------------------------------
CS代码中:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            DropDownList goodsType = (DropDownList)e.Row.FindControl("DropDownList1");
            con = new SqlConnection(ConfigurationManager.ConnectionStrings["TestProviderConnectionString"].ConnectionString);
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter("select * from goodsType",con);
            da.Fill(ds,"gt");
            goodsType.DataSource = ds.Tables["gt"];
            goodsType.DataTextField = "goodsType";
            goodsType.DataValueField = "goodsId";
            goodsType.DataBind();
        }    }

解决方案 »

  1.   

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
      

  2.   

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
          GridView gv = (GridView)sender;
          if(gv.Rows.Count ==0)
           {
                 return;
             }
           DropDownList ddl = (DropDownList)gv.Rows[gv.Rows.Conut-1]FindControl("DropDownList1");
           if(ddl != null)
            {
                    con = new SqlConnection(ConfigurationManager.ConnectionStrings["TestProviderConnectionString"].ConnectionString);
                DataSet ds = new DataSet();
                SqlDataAdapter da = new SqlDataAdapter("select * from goodsType",con);
                da.Fill(ds,"gt");
                goodsType.DataSource = ds.Tables["gt"];
                goodsType.DataTextField = "goodsType";
                goodsType.DataValueField = "goodsId";
                goodsType.DataBind();           
               }拿去试试``````
      

  3.   

    就用GridView自带的编辑都可以用``
      

  4.   

    wuhan_dotnet(刚刚学asp.net^~^) ( ) 信誉:100
    =================================================
    你的代码我用了,DropDownList ddl = (DropDownList)gv.Rows[gv.Rows.Conut-1]FindControl("DropDownList1");这句出错,然后我给改成
    DropDownList goodsType = (DropDownList)e.Row.FindControl("DropDownList1");
    可以使用了,可是点编辑的时候DropDownList没有数据
      

  5.   

    谢了,我搞定了,我把
    GridView gv = (GridView)sender;
          if(gv.Rows.Count ==0)
           {
                 return;
             }
    去掉就好了,谢谢,结贴