Binding values in Dropdownlist in Gridview at runtime is not a big task.We can do it using RowDatabound event.In the given example dropdownlist is being populated at the time of editing.
At first declare a dropdownlist control in EditItemTemplate.
<asp:TemplateField HeaderText="State" SortExpression="StateName" >
<EditItemTemplate>
<asp:DropDownList ID="ddlStateNm" runat="server" DataTextField="StateName" DataValueField="StateID"> </asp:DropDownList>
<asp:Label ID="lblStateID" runat="server" Text='<%# Bind("StateID") %>' Visible="false"></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblStateName" runat="server" Text='<%# Bind("StateName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<EditItemTemplate>
<asp:DropDownList ID="ddlStateNm" runat="server" DataTextField="StateName" DataValueField="StateID"> </asp:DropDownList>
<asp:Label ID="lblStateID" runat="server" Text='<%# Bind("StateID") %>' Visible="false"></asp:Label>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblStateName" runat="server" Text='<%# Bind("StateName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Write a Function to bind DropDownList.
public void BindStateddl(DropDownList ddl)
{
SqlDataAdapter adp = new SqlDataAdapter("SELECT [StateID],[StateName] FROM [dbo].[MST_State] order by [StateName] asc", con);
DataSet ds = new DataSet();
adp.Fill(ds);
ddl.DataSource = ds;
ddl.DataBind();
ddl.Items.Insert(0, new ListItem("---Select---", "0"));
}
{
SqlDataAdapter adp = new SqlDataAdapter("SELECT [StateID],[StateName] FROM [dbo].[MST_State] order by [StateName] asc", con);
DataSet ds = new DataSet();
adp.Fill(ds);
ddl.DataSource = ds;
ddl.DataBind();
ddl.Items.Insert(0, new ListItem("---Select---", "0"));
}
Now the most important part the RowDataBound event. Here at first check for DataRow so that it will overlook HeaderRow and then check for EditIndex so that Databinding to DropDownList will be implemented to editble row only.
protected void gvCourt_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (gvCourt.EditIndex == e.Row.RowIndex) //to overlook header row
{
string StateId = ((Label)e.Row.FindControl("lblStateID")).Text;
DropDownList ddlGridState = (DropDownList)e.Row.FindControl("ddlStateNm");
BindStateddl(ddlGridState);
ddlGridState.SelectedValue = StateId;
}
}
}
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (gvCourt.EditIndex == e.Row.RowIndex) //to overlook header row
{
string StateId = ((Label)e.Row.FindControl("lblStateID")).Text;
DropDownList ddlGridState = (DropDownList)e.Row.FindControl("ddlStateNm");
BindStateddl(ddlGridState);
ddlGridState.SelectedValue = StateId;
}
}
}



