Свяжите свой ретранслятор с тем, что перечисляет месяцы.
Поместите вид сетки в шаблон элемента повторителя.
В событии ItemDataBound повторителя связывают вид сетки с чем-то, что перечисляет все события за этот месяц.
Вы можете получить месяц из объекта RepeaterItemEventArgs.Item.DataItem, который содержит элемент, который привязан к элементу повторителя.
<asp:Repeater ID="Repeater1" runat="server"
onitemdatabound="Repeater1_ItemDataBound">
<ItemTemplate>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</ItemTemplate>
</asp:Repeater>
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
GridView gridview = e.Item.FindControl("GridView1") as GridView;
gridview.DataSource = ...;
gridview.DataBind();
}
РЕДАКТИРОВАТЬ: Обновлено, чтобы показать, как создается диапазон месяцев.
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
DateTime currentDate = DateTime.Now;
DateTime startDate = new DateTime(currentDate.Year, currentDate.Month, 1);
List<DateTime> dateRange = new List<DateTime>();
for (int i = 0; i < 12; i++)
dateRange.Add(startDate.AddMonths(i));
Repeater1.DataSource = dateRange;
Repeater1.DataBind();
}
}