0

我的 aspx 页面中有一个日历,如下所示:

<asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>

而且后面的代码很简单。

protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
   {

    Response.Write("test");
    if (!e.Day.IsToday)
    {
        Label aLabel = new Label();
        aLabel.Text = " <br>test";
        e.Cell.Controls.Add(aLabel);
        date.Text = e.Day.ToString();
    }     
}

我的最终目标是从数据库中为事件添加文本,但目前我什至无法让函数本身执行。response.writes 在页面上没有任何位置,并且除了今天之外的所有日期都没有出现“测试”一词(这是我的理解应该发生的事情)。

4

3 回答 3

2

您可以按如下方式注册render方法,从而节省您为注册编写代码:

<asp:Calendar ID="Calendar1" OnDayRender="Calendar1_DayRender" runat="server">
</asp:Calendar>

注意

"因为在渲染Calendar控件时会引发DayRender事件,所以不能添加同样可以引发事件的控件,比如LinkBut​​ton。只能添加静态控件,比如System.Web.UI.LiteralControl、Label、图像和超链接。”

更新:

Calendar.OnDayRender 方法

Calendar.DayRender 事件

于 2012-09-29T22:43:51.337 回答
1

DayRender事件需要映射事件处理程序。您尚未在代码中显示这一点。您需要在Page_Init活动期间添加它(而不是 Page 构造函数):

public override void OnInit(Object sender, EventArgs e) {
    this.Calendar1.DayRender += new EventHandler( Calendar1_DayRender );
}
于 2012-09-29T22:33:45.333 回答
0
        **

        In source View
        --------------

        **

        <asp:Calendar runat="server" ID="cld_date_required" BackColor="White" BorderColor="#999999"CellPadding="4" DayNameFormat="Shortest"
 Font-Names="Arial" Font-Size="8pt" ForeColor="Black" 
 OnDayRender="DayRender" Height="180px" Width="270px"></asp:Calender>


        In Code View
        ------------


     protected void DayRender(object sender, DayRenderEventArgs e)
            {
                if (e.Day.Date < System.DateTime.Today)
                {
                    e.Day.IsSelectable = false;
                    e.Cell.ForeColor = System.Drawing.Color.LightGray;
                }
            }
于 2013-12-10T06:06:54.090 回答