ASP日历PostBack&的DayRender

时间:2013-08-08 10:35:24

标签: c# asp.net

我有两个日历作为SqlDataSource的控制参数; fromDateCaltoDateCal。这两个日历都有各自的DayRender事件,这些事件限制了每个事件的可用日期。

日历设置如下:

<asp:Calendar ID="fromDateCal" runat="server" BackColor="White" BorderColor="#999999"
        CellPadding="4" DayNameFormat="Shortest" Font-Names="Verdana" Font-Size="8pt"
        ForeColor="Black" Height="180px" Width="200px" onDayRender="fromDateCal_DayRender">
    <DayHeaderStyle BackColor="#CCCCCC" Font-Bold="True" Font-Size="7pt" />
    <NextPrevStyle VerticalAlign="Bottom" />
    <OtherMonthDayStyle ForeColor="#808080" />
    <SelectedDayStyle BackColor="#CEDEF4" BorderColor="#7BA7E1" BorderWidth="2" BorderStyle="Solid" Font-Bold="True" ForeColor="#2966B8" />
    <SelectorStyle BackColor="#FFCC99" />
    <TitleStyle BackColor="#999999" BorderColor="Black" Font-Bold="True" />
    <WeekendDayStyle BackColor="#FFFFCC" />
</asp:Calendar>

<asp:Calendar ID="toDateCal" runat="server" BackColor="White" BorderColor="#999999"
        CellPadding="4" DayNameFormat="Shortest" Font-Names="Verdana" Font-Size="8pt"
        ForeColor="Black" Height="180px" Width="200px" OnDayRender="fromDateCal_DayRender">
    <DayHeaderStyle BackColor="#CCCCCC" Font-Bold="True" Font-Size="7pt" />
    <NextPrevStyle VerticalAlign="Bottom" />
    <OtherMonthDayStyle ForeColor="#808080" />
    <SelectedDayStyle BackColor="#CEDEF4" BorderColor="#7BA7E1" BorderWidth="2" BorderStyle="Solid" Font-Bold="True" ForeColor="#2966B8" />
    <SelectorStyle BackColor="#FFCC99" />
    <TitleStyle BackColor="#999999" BorderColor="Black" Font-Bold="True" />
    <WeekendDayStyle BackColor="#FFFFCC" />
</asp:Calendar>

相应的DayRender活动是:

protected void fromDateCal_DayRender(object sender, System.Web.UI.WebControls.DayRenderEventArgs e)
{
    if (e.Day.Date > toDateCal.SelectedDate.AddDays(-1))
    {
        e.Day.IsSelectable = false;
        e.Cell.CssClass = "disabledDate";
    }
}

protected void toDateCal_DayRender(object sender, System.Web.UI.WebControls.DayRenderEventArgs e)
{
    if (e.Day.Date > DateTime.Now || e.Day.Date < fromDateCal.SelectedDate.AddDays(1))
    {
        e.Day.IsSelectable = false;
        e.Cell.CssClass = "disabledDate";
    }
}

设置的限制是;

  • fromDateCal不能大于或等于toDateCal.SelectedDate
  • toDateCal不能大于DateTime.Now且不能小于或等于fromDateCal.SelectedDate

当页面加载时,会应用这些限制,一切都会显示并且效果很好。但是,如果在任一日历上选择了日期,则不会立即执行DayRender事件。我发现你必须从同一个日历中再次选择相同的日期,以便在两者上更新限制。

有没有办法解决这个问题并让DayRender在第一个PostBack上执行?我已经用尽了对ASP.Net的有限知识,现在正在寻求帮助。

感谢。

0 个答案:

没有答案