Bind DropDownList in GridView


This blog will show you to bind DropDownList in GridView.
Default.aspx

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">

        <Columns>

        <asp:TemplateField HeaderText="Sno">

        <ItemTemplate>

        <%# Container.DataItemIndex + 1 %>

        </ItemTemplate>

        </asp:TemplateField>

        <asp:TemplateField HeaderText="Salary">

         <ItemTemplate>

        <%#Eval("Salary")  %>

        </ItemTemplate>

        </asp:TemplateField>

        <asp:TemplateField HeaderText="Address">

         <ItemTemplate>

        <%#Eval("Address")  %>

        </ItemTemplate>

        </asp:TemplateField>

        <asp:TemplateField HeaderText="Deptno">

         <ItemTemplate>

        <%#Eval("Deptno")  %>

        </ItemTemplate>

        </asp:TemplateField>

        <asp:TemplateField HeaderText="EmpName">

        <ItemTemplate>

        <asp:DropDownList ID="ddl" runat="server">

        <asp:ListItem>--Select--</asp:ListItem>

        </asp:DropDownList>

        </ItemTemplate>

        </asp:TemplateField>

        </Columns>

</asp:GridView>
Default.aspx.cs

protected
void Page_Load(object sender, EventArgs e)
{
    BindGrid();
}

private
void BindGrid()
{
    SqlConnection con = new SqlConnection("");
    SqlDataAdapter da = new SqlDataAdapter("select * from emp", con);
    da.Fill(ds, "Emp");
    GridView1.DataSource = ds;
    GridView1.DataBind();
    foreach (GridViewRow grdRow in GridView1.Rows)
    {
        DropDownList drdList = new DropDownList();
        // Nested DropDownList Control reference is passed to the DrdList object. This will allow you access the properties of dropdownlist placed inside the GridView Template column.
        drdList = (DropDownList)( GridView1.Rows[ grdRow.RowIndex ].Cells[4].FindControl( "ddl" ));
        // DataBinding of nested DropDownList Control for each row of GridView Control.
        drdList.DataSource = ds;
        drdList.DataValueField = "Sno"
        drdList.DataTextField = "Name";
        drdList.DataBind();
    }
}