Nie jestem pewien, dlaczego inne osoby wcześniej o to nie pytały. Ale czy zauważyłeś, że asp: Kalendarz pokazuje dodatkowy tydzień na końcu?Jak usunąć ostatni tydzień z kalendarza
Na przykład, jeśli VisibleMonth jest ustawiony na 2010-03-01 i FirstDayOfWeek na niedzielę: Wyświetli 6 tygodni.
- 28 lutego 6 marca
- 07 marca do 13 marca
- 14 marca 20 marca
- 21 marca do 27 marca
- 28 marca 3 kwietnia
- 4 kwietnia kwietnia 10
Zastanawiam się, dlaczego Microsoft pokazuje ostatni wiersz, który jest w całości w kwietniu. Próbowałem przeszukać sieć pod kątem właściwości, ale wygląda na to, że nie istnieje.
Jedynym rozwiązaniem, które mogłem wymyślić jest zastąpienie Pre_Render i sprawdzić wszystkie indywidualne daty, jeśli są nadal w ciągu tygodnia VisibleDate. Ale oczywiście jest to ekstremalne sprawdzanie, ponieważ pokazuje je każde renderowanie kontrolki.
Oto moja praca.
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;
}
}
Dziękujemy! tego właśnie szukałem ze względu na znaczniki wyboru tygodniowego. Musiał dodać (jeśli currDay = 0 Następnie currDay = 7) do funkcji HideExtraWeek, aby zarządzać poniedziałkiem będącym pierwszym dniem tygodnia. Prawdopodobnie nie najczystsze rozwiązanie, ale pracowało dla mnie. – Michelh91