Hi learningmrs,
Check this example. Now please take its reference and correct your code.
HTML
<asp:DropDownList runat="server" ID="ddlMonths">
<asp:ListItem Text="Select" Value="0" />
<asp:ListItem Text="January" Value="1" />
<asp:ListItem Text="February" Value="2" />
<asp:ListItem Text="March" Value="3" />
</asp:DropDownList>
<asp:DropDownList runat="server" ID="ddlYears">
<asp:ListItem Text="Select" Value="0" />
<asp:ListItem Text="2020" Value="2020" />
<asp:ListItem Text="2021" Value="2021" />
<asp:ListItem Text="2022" Value="2022" />
</asp:DropDownList>
<asp:Button Text="Save" runat="server" OnClick="OnSave" />
<hr />
<asp:GridView runat="server" ID="gvDetails" AutoGenerateColumns="false" OnRowDataBound="OnRowDataBound">
<Columns>
<asp:TemplateField HeaderText="Days">
<ItemTemplate>
<asp:DropDownList runat="server" ID="ddlDays">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Month" HeaderText="Month" />
<asp:BoundField DataField="Year" HeaderText="Year" />
</Columns>
</asp:GridView>
Code
C#
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlDays = e.Row.FindControl("ddlDays") as DropDownList;
List<ListItem> days = new List<ListItem>();
for (int i = 1; i <= DateTime.DaysInMonth(Convert.ToInt32(ddlYears.SelectedValue), Convert.ToInt32(ddlMonths.SelectedValue)); i++)
{
days.Add(new ListItem { Value = i.ToString(), Text = i.ToString() });
}
ddlDays.DataSource = days;
ddlDays.DataTextField = "Text";
ddlDays.DataValueField = "Value";
ddlDays.DataBind();
}
}
protected void OnSave(object sender, EventArgs e)
{
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add("Month");
dt.Columns.Add("Year");
dt.Rows.Add(ddlMonths.SelectedItem.Text, ddlYears.SelectedItem.Text);
gvDetails.DataSource = dt;
gvDetails.DataBind();
}
VB.Net
Protected Sub OnRowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
If e.Row.RowType = DataControlRowType.DataRow Then
Dim ddlDays As DropDownList = TryCast(e.Row.FindControl("ddlDays"), DropDownList)
Dim days As List(Of ListItem) = New List(Of ListItem)()
For i As Integer = 1 To DateTime.DaysInMonth(Convert.ToInt32(ddlYears.SelectedValue), Convert.ToInt32(ddlMonths.SelectedValue))
days.Add(New ListItem With {
.Value = i.ToString(),
.Text = i.ToString()
})
Next
ddlDays.DataSource = days
ddlDays.DataTextField = "Text"
ddlDays.DataValueField = "Value"
ddlDays.DataBind()
End If
End Sub
Protected Sub OnSave(ByVal sender As Object, ByVal e As EventArgs)
Dim dt As System.Data.DataTable = New System.Data.DataTable()
dt.Columns.Add("Month")
dt.Columns.Add("Year")
dt.Rows.Add(ddlMonths.SelectedItem.Text, ddlYears.SelectedItem.Text)
gvDetails.DataSource = dt
gvDetails.DataBind()
End Sub
Screenshot
