我的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在页面上没有任何地方,除了今天之外的所有日期都没有出现“test”这个词(这是我的理解应该发生的事情)。
答案 0 :(得分:2)
您可以按如下方式注册渲染方法,从而节省您为注册编写代码:
<asp:Calendar ID="Calendar1" OnDayRender="Calendar1_DayRender" runat="server">
</asp:Calendar>
NOTE:
“因为在呈现Calendar控件时引发了DayRender事件,所以无法添加也可以引发事件的控件,例如LinkButton。您只能添加静态控件,例如System.Web.UI.LiteralControl ,标签,图像和HyperLink。“
<强>更新强>
答案 1 :(得分:1)
DayRender
事件需要映射事件处理程序。您尚未在代码中显示该内容。您需要在Page_Init
事件(而不是Page构造函数)中添加此项:
public override void OnInit(Object sender, EventArgs e) {
this.Calendar1.DayRender += new EventHandler( Calendar1_DayRender );
}
答案 2 :(得分: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;
}
}