Управление календарем, функция DayRender не выполняется
У меня есть календарь на моей странице 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();
}
}
Моя конечная цель - добавить текст из базы данных для событий, но в настоящий момент я не могу даже заставить саму функцию выполняться. На странице нигде нет ответа, а слово "тест" встречается не во всех датах, кроме сегодняшнего дня (что и должно быть в моем понимании).
3 ответа
Вы можете зарегистрировать метод рендеринга следующим образом, сохранив свой код для регистрации:
<asp:Calendar ID="Calendar1" OnDayRender="Calendar1_DayRender" runat="server">
</asp:Calendar>
"Поскольку событие DayRender возникает во время визуализации элемента управления Calendar, вы не можете добавить элемент управления, который также может вызывать событие, например LinkButton. Вы можете добавлять только статические элементы управления, такие как System.Web.UI.LiteralControl, Label, Имидж и HyperLink."
ОБНОВИТЬ:
DayRender
Событие требует отображения обработчика событий. Вы не показали это в своем коде. Вам нужно будет добавить это во время вашего Page_Init
событие (не конструктор страницы):
public override void OnInit(Object sender, EventArgs e) {
this.Calendar1.DayRender += new EventHandler( Calendar1_DayRender );
}
**
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;
}
}