No estoy seguro de por qué otras personas no han preguntado esto antes. Pero ¿has notado que el asp: Calendario muestra una semana extra al final?Cómo quitar la última semana de un calendario
Por ejemplo, si VisibleMonth está configurado para 2010-03-01 y FirstDayOfWeek para Sunday: Se mostrarán 6 semanas.
- 28 febrero-6 marzo
- 7 marzo hasta 13 marzo
- 14 marzo-20 marzo
- 21 marzo a 27 marzo
- 28 marzo-3 abril
- 4 abril hasta abril 10
Me preguntaba por qué Microsoft muestra la última fila, que es totalmente en abril. Traté de buscar en la red una propiedad pero parece que no existe.
La única solución que podía pensar es anular el Pre_Render y verificar todas las fechas individuales si todavía están dentro de la semana del VisibleDate. Pero, por supuesto, es una comprobación extrema ya que cada renderización del control lo muestra.
Aquí está mi trabajo.
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;
}
}
¡Gracias! esto es lo que estaba buscando debido al margen de selección de la semana. Tuve que agregar (si currDay = 0 Then currDay = 7) a la función HideExtraWeek para administrar el lunes como el primer día de la semana. Probablemente no sea la solución más limpia, pero funcionó para mí. – Michelh91