Я не уверен, почему другие люди не спросили это прежде. Но Вы сделали, замечают, что asp:Calendar показывает дополнительную неделю в конце?
Например, если VisibleMonth установлен до 01.03.2010 и FirstDayOfWeek к воскресенью: Это покажет 6 недель.
Я задавался вопросом, почему Microsoft показывает последнюю строку, которая находится полностью на апреле. Я пытался искать сеть свойство, но это, кажется, не является существующим.
Единственное решение, о котором я мог думать, состоит в том, чтобы переопределить Pre_Render и проверить всю отдельную дату, если они все еще в течение недели после VisibleDate. Но конечно который является экстремальным значением, проверяющим, так как каждый рендеринг управления показывает его.
Вот моя работа вокруг.
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
int dayOfWeek = Convert.ToInt16(e.Day.Date.DayOfWeek);
int compensate = dayOfWeek - Convert.ToInt16(DayOfWeek.Sunday);
DateTime WeekStart = e.Day.Date.AddDays(-1 * compensate);
DateTime WeekEnd = WeekStart.AddDays(6);
// If the start and end of the week does not have relevance to the current month
if (WeekStart.Month != Calendar1.VisibleDate.Month &&
WeekEnd .Month != Calendar1.VisibleDate.Month)
{
e.Cell.Text = "";
e.Cell.Height = 0;
e.Cell.Visible = false;
}
}