Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Bind DropDownList in EditItemTemplate of GridView with selected value using Button edit CommandName in asp.net

In this article, I will explain you how to bind Dropdownlist control in EditItemTemplate of Gridview by using CommandName property of Button control. We will also set original value of DropDownList as default selected value while row editing using FindByValue.

In designer file :

In designer file, create a GridView control with OnRowEditing and OnRowCancelingEdit events. Create four TemplateFields for four columns. In 4th TemplateField, create two buttons CommandName="Edit" and CommandName="Cancel". Below is the complete designer code.


div style="font-family: Arial; ">
asp:GridView ID="gvEmployee" runat="server" AutoGenerateColumns="False" AllowPaging="True"
ShowFooter="True" PageSize="5" OnRowCancelingEdit="gvEmployee_RowCancelingEdit"
OnRowEditing="gvEmployee_RowEditing" CellPadding="2" BackColor="White"
BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px">
FooterStyle BackColor="#FFFFCC" ForeColor="#330099" />
HeaderStyle BackColor="#990000" ForeColor="#FFFFCC" Font-Bold="True" />
Columns>
asp:TemplateField HeaderText="Employee Id">
ItemTemplate>
asp:Label ID="lblEmpId" runat="server" Text=''>
asp:Label>
ItemTemplate>
asp:TemplateField>
asp:TemplateField HeaderText="Employee Name">
ItemTemplate>
asp:Label ID="lblEmpName" runat="server" Text=''>
asp:Label>
ItemTemplate>
EditItemTemplate>
asp:TextBox ID="eEmpName" runat="server" Text=''>
asp:TextBox>
EditItemTemplate>
asp:TemplateField>
asp:TemplateField HeaderText="Employee Country">
ItemTemplate>
asp:Label ID="lblEmpCountry" runat="server" Text=''>
asp:Label>
ItemTemplate>
EditItemTemplate>
asp:DropDownList ID="eddlEmpCountry" runat="server">asp:DropDownList>
EditItemTemplate>
asp:TemplateField>
asp:TemplateField HeaderText="Operation">
ItemTemplate>
asp:Button ID="btnEdit" Text="Edit" runat="server" CommandName="Edit" />
ItemTemplate>
EditItemTemplate>
asp:Button ID="btnCancel" Text="Cancel" runat="server" CommandName="Cancel" />
EditItemTemplate>
asp:TemplateField>
Columns>
PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" />
RowStyle BackColor="White" ForeColor="#330099" />
SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" />
SortedAscendingCellStyle BackColor="#FEFCEB" />
SortedAscendingHeaderStyle BackColor="#AF0101" />
SortedDescendingCellStyle BackColor="#F6F0C0" />
SortedDescendingHeaderStyle BackColor="#7E0000" />
asp:GridView>
div>

Data Source :

To bind GridView, I'm using dummy Datatable as a data source. Here BindEmployeeGrid() method will bind GridView when page is loaded. When GridView is populated, it will look like as shown below.

When we will click on the edit button, GridView row will go into edit mode and dropdownlist will be binded in country column. Employee's current country will be selected default.

In Code-Behind file :

Include the below Namespace.


using System.Data;

Below is the complete C# code.

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindEmployeeGrid();
}
}

private void BindEmployeeGrid()
{
//Creating a DataTable
DataTable dt = new DataTable();

//adding Columns to DataTable
dt.Columns.Add("EmpID", typeof(Int32));
dt.Columns.Add("EmpName", typeof(string));
dt.Columns.Add("EmpCountry", typeof(string));

//adding Rows to DataTable
dt.Rows.Add(1, "Rahul", "India");
dt.Rows.Add(2, "John", "USA");
dt.Rows.Add(3, "Mary", "UK");
dt.Rows.Add(4, "Mathew", "Australia");

// binding gridview
gvEmployee.DataSource = dt;
gvEmployee.DataBind();

}

private DataTable CountryList()
{
//Creating DataTable for List of Subjects
DataTable dt = new DataTable();

//adding Column to DataTable
dt.Columns.Add("CountryName", typeof(string));

//adding Rows to DataTable
dt.Rows.Add("--Select--");
dt.Rows.Add("Australia");
dt.Rows.Add("Canada");
dt.Rows.Add("India");
dt.Rows.Add("UK");
dt.Rows.Add("USA");

return dt;
}

protected void gvEmployee_RowEditing(object sender, GridViewEditEventArgs e)
{

// finding the employee country before row editing

Label Country = (Label)gvEmployee.Rows[e.NewEditIndex].FindControl("lblEmpCountry");

// set the GridView to edit mode
gvEmployee.EditIndex = e.NewEditIndex;
BindEmployeeGrid();

//find the Country DropDownList of EditItemTemplate
DropDownList eddlEmpCountry = (DropDownList)gvEmployee.Rows[gvEmployee.EditIndex].FindControl(
"eddlEmpCountry");

// assigning the Country DataTable to DropDownList
eddlEmpCountry.DataSource = CountryList();
eddlEmpCountry.DataTextField = "CountryName";
eddlEmpCountry.DataValueField = "CountryName";
eddlEmpCountry.DataBind();

// set the employees country dropdownlist selected as true using findbyvalue
eddlEmpCountry.Items.FindByValue(Country.Text).Selected = true;

}

protected void gvEmployee_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
//set GridView in initial mode
gvEmployee.EditIndex = -1;
BindEmployeeGrid();
}


This post first appeared on ASPArticles, please read the originial post: here

Share the post

Bind DropDownList in EditItemTemplate of GridView with selected value using Button edit CommandName in asp.net

×

Subscribe to Asparticles

Get updates delivered right to your inbox!

Thank you for your subscription

×