Hi roon3y,
I have created sample that full-fill your requirement. You need to bind all the dropdownlist ang grid from database.
HTML
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="OnRowDataBound">
<Columns>
<asp:BoundField HeaderText="Name" DataField="Name" />
<asp:TemplateField HeaderText="Hire">
<ItemTemplate>
<asp:Label ID="lblHire" runat="server" Text='<%# Eval("Hire") %>' Visible="false" />
<asp:DropDownList ID="ddlHire" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="Select" />
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Status">
<ItemTemplate>
<asp:Label ID="lblStatus" runat="server" Text='<%# Eval("Status") %>' Visible="false" />
<asp:DropDownList ID="ddlStatus" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="Select" />
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Training">
<ItemTemplate>
<asp:Label ID="lblTraining" runat="server" Text='<%# Eval("Training") %>' Visible="false" />
<asp:DropDownList ID="ddlTraining" runat="server" AppendDataBoundItems="true">
<asp:ListItem Text="Select" />
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
C#
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[4] {
new DataColumn("Name"), new DataColumn("Hire"),
new DataColumn("Status"), new DataColumn("Training")});
dt.Rows.Add("Name 1", "Hire 1", "Status 2", "Training 3");
dt.Rows.Add("Name 4", "Hire 3", "Status 1", "Training 2");
dt.Rows.Add("Name 2", "Hire 4", "Status 3", "Training 1");
dt.Rows.Add("Name 3", "Hire 2", "Status 4", "Training 4");
GridView1.DataSource = dt;
GridView1.DataBind();
}
}
private DataTable HireDataTable()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Id", typeof(int)), new DataColumn("Name", typeof(string)) });
dt.Rows.Add(1, "Hire 1");
dt.Rows.Add(2, "Hire 2");
dt.Rows.Add(3, "Hire 3");
dt.Rows.Add(4, "Hire 4");
return dt;
}
private DataTable StatusDataTable()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Id", typeof(int)), new DataColumn("Name", typeof(string)) });
dt.Rows.Add(1, "Status 1");
dt.Rows.Add(2, "Status 2");
dt.Rows.Add(3, "Status 3");
dt.Rows.Add(4, "Status 4");
return dt;
}
private DataTable TrainingDataTable()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Id", typeof(int)), new DataColumn("Name", typeof(string)) });
dt.Rows.Add(1, "Training 1");
dt.Rows.Add(2, "Training 2");
dt.Rows.Add(3, "Training 3");
dt.Rows.Add(4, "Training 4");
return dt;
}
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlHire = (e.Row.FindControl("ddlHire") as DropDownList);
DropDownList ddlStatus = (e.Row.FindControl("ddlStatus") as DropDownList);
DropDownList ddlTraining = (e.Row.FindControl("ddlTraining") as DropDownList);
ddlHire.DataSource = HireDataTable();
ddlHire.DataTextField = "Name";
ddlHire.DataValueField = "Name";
ddlHire.DataBind();
ddlStatus.DataSource = StatusDataTable();
ddlStatus.DataTextField = "Name";
ddlStatus.DataValueField = "Name";
ddlStatus.DataBind();
ddlTraining.DataSource = TrainingDataTable();
ddlTraining.DataTextField = "Name";
ddlTraining.DataValueField = "Name";
ddlTraining.DataBind();
string hire = (e.Row.FindControl("lblHire") as Label).Text;
ddlHire.Items.FindByValue(hire).Selected = true;
string status = (e.Row.FindControl("lblStatus") as Label).Text;
ddlStatus.Items.FindByValue(status).Selected = true;
string training = (e.Row.FindControl("lblTraining") as Label).Text;
ddlTraining.Items.FindByValue(training).Selected = true;
}
}
VB.Net
Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn(3) {New DataColumn("Name"), New DataColumn("Hire"), New DataColumn("Status"), New DataColumn("Training")})
dt.Rows.Add("Name 1", "Hire 1", "Status 2", "Training 3")
dt.Rows.Add("Name 4", "Hire 3", "Status 1", "Training 2")
dt.Rows.Add("Name 2", "Hire 4", "Status 3", "Training 1")
dt.Rows.Add("Name 3", "Hire 2", "Status 4", "Training 4")
GridView1.DataSource = dt
GridView1.DataBind()
End If
End Sub
Private Function HireDataTable() As DataTable
Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn(1) {New DataColumn("Id", GetType(Integer)), New DataColumn("Name", GetType(String))})
dt.Rows.Add(1, "Hire 1")
dt.Rows.Add(2, "Hire 2")
dt.Rows.Add(3, "Hire 3")
dt.Rows.Add(4, "Hire 4")
Return dt
End Function
Private Function StatusDataTable() As DataTable
Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn(1) {New DataColumn("Id", GetType(Integer)), New DataColumn("Name", GetType(String))})
dt.Rows.Add(1, "Status 1")
dt.Rows.Add(2, "Status 2")
dt.Rows.Add(3, "Status 3")
dt.Rows.Add(4, "Status 4")
Return dt
End Function
Private Function TrainingDataTable() As DataTable
Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn(1) {New DataColumn("Id", GetType(Integer)), New DataColumn("Name", GetType(String))})
dt.Rows.Add(1, "Training 1")
dt.Rows.Add(2, "Training 2")
dt.Rows.Add(3, "Training 3")
dt.Rows.Add(4, "Training 4")
Return dt
End Function
Protected Sub OnRowDataBound(sender As Object, e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim ddlHire As DropDownList = TryCast(e.Row.FindControl("ddlHire"), DropDownList)
Dim ddlStatus As DropDownList = TryCast(e.Row.FindControl("ddlStatus"), DropDownList)
Dim ddlTraining As DropDownList = TryCast(e.Row.FindControl("ddlTraining"), DropDownList)
ddlHire.DataSource = HireDataTable()
ddlHire.DataTextField = "Name"
ddlHire.DataValueField = "Name"
ddlHire.DataBind()
ddlStatus.DataSource = StatusDataTable()
ddlStatus.DataTextField = "Name"
ddlStatus.DataValueField = "Name"
ddlStatus.DataBind()
ddlTraining.DataSource = TrainingDataTable()
ddlTraining.DataTextField = "Name"
ddlTraining.DataValueField = "Name"
ddlTraining.DataBind()
Dim hire As String = TryCast(e.Row.FindControl("lblHire"), Label).Text
ddlHire.Items.FindByValue(hire).Selected = True
Dim status As String = TryCast(e.Row.FindControl("lblStatus"), Label).Text
ddlStatus.Items.FindByValue(status).Selected = True
Dim training As String = TryCast(e.Row.FindControl("lblTraining"), Label).Text
ddlTraining.Items.FindByValue(training).Selected = True
End If
End Sub
Screenshot
