Fill DropDown List on GridView in ASP.Net

Fill Dropdown list on GridView1_RowDataBound

Finding controls on SelectedIndexChanged Events


Create Table Here I Have Provided The Script

CREATE TABLE [dbo].[Food](

[Fid] [bigint] primary key IDENTITY(1,1) NOT NULL,

[Fname] [nvarchar](100) NULL,

[Fprice] [bigint] NULL,

[Recstatus] [char](1) NULL,

)


 

INSERT INTO Food(Fname,Fprice,Recstatus)VALUES('Dal',2000,'A')

INSERT INTO Food(Fname,Fprice,Recstatus)VALUES('Rice',52000,'A')
 

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Maingrid.aspx.cs" Inherits="ALLAboutGridview.Maingrid" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">

    <title></title>

</head>

<body>

    <form id="form1" runat="server">

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

        GridLines="Horizontal" OnRowDataBound="GridView1_RowDataBound" BackColor="White"

        BorderColor="#336666" BorderStyle="Double" BorderWidth="3px">

        <Columns>

            <asp:TemplateField HeaderText="Product">

                <ItemTemplate>

                    <asp:DropDownList ID="DropDownList1" AppendDataBoundItems="true" Width="150px" runat="server"

                        AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">

                        <asp:ListItem Text="Select" Value="0"></asp:ListItem>

                    </asp:DropDownList>

                    <br />

                    <asp:Label ID="label1" BackColor="BurlyWood" runat="server" Text=""></asp:Label>

                </ItemTemplate>

            </asp:TemplateField>

        </Columns>

        <FooterStyle BackColor="White" ForeColor="#333333" />

        <HeaderStyle BackColor="#336666" Font-Bold="True" ForeColor="White" />

        <PagerStyle BackColor="#336666" ForeColor="White" HorizontalAlign="Center" />

        <RowStyle BackColor="White" ForeColor="#333333" />

        <SelectedRowStyle BackColor="#339966" Font-Bold="True" ForeColor="White" />

        <SortedAscendingCellStyle BackColor="#F7F7F7" />

        <SortedAscendingHeaderStyle BackColor="#487575" />

        <SortedDescendingCellStyle BackColor="#E5E5E5" />

        <SortedDescendingHeaderStyle BackColor="#275353" />

    </asp:GridView>

    </form>

</body>

</html>
 

public void bindgrid()

{

 

    SqlCommand cmd = new SqlCommand("select * from food ", con);

    cmd.CommandType = CommandType.Text;

    SqlDataAdapter da = new SqlDataAdapter();

    da.SelectCommand = cmd;

    DataTable dt = new DataTable();

    da.Fill(dt);

    if (dt.Rows.Count > 0)

    {

        GridView1.DataSource = dt;

        GridView1.DataBind();

    }

    else

    {

        DataRow dr = dt.NewRow();

        dt.Rows.Add(dr);

        GridView1.DataSource = dt;

        GridView1.DataBind();

    }

}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)

{

    if (e.Row.RowType == DataControlRowType.DataRow)

    {

        SqlCommand cmd = new SqlCommand("select * from food ", con);

        cmd.CommandType = CommandType.Text;

        SqlDataAdapter da = new SqlDataAdapter();

        da.SelectCommand = cmd;

        DataTable dt = new DataTable();

        da.Fill(dt);

 

        if (dt.Rows.Count > 0)

        {

            DropDownList DropDownList1 =

            (DropDownList)e.Row.FindControl("DropDownList1");

            DropDownList1.DataSource = dt;

            DropDownList1.DataTextField = "Fname";

            DropDownList1.DataValueField = "Fid";

            DropDownList1.DataBind();

        }

    }

}

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)

{

    DropDownList drp = (DropDownList)sender;

    GridViewRow gv = (GridViewRow)drp.NamingContainer;

    int index = gv.RowIndex;

    DropDownList DropDownList1 = (DropDownList)GridView1.Rows[index].FindControl("DropDownList1");

    Label label1 = (Label)GridView1.Rows[index].FindControl("label1");

    label1.Text = DropDownList1.SelectedItem.Text;

}

Final Output