Calendar.OnDayRender(TableCell, CalendarDay) Метод

Определение

Вызывает событие DayRender элемента управления Calendar и позволяет предоставить пользовательский обработчик для события DayRender.Raises the DayRender event of the Calendar control and allows you to provide a custom handler for the DayRender event.

protected:
 virtual void OnDayRender(System::Web::UI::WebControls::TableCell ^ cell, System::Web::UI::WebControls::CalendarDay ^ day);
protected virtual void OnDayRender (System.Web.UI.WebControls.TableCell cell, System.Web.UI.WebControls.CalendarDay day);
abstract member OnDayRender : System.Web.UI.WebControls.TableCell * System.Web.UI.WebControls.CalendarDay -> unit
override this.OnDayRender : System.Web.UI.WebControls.TableCell * System.Web.UI.WebControls.CalendarDay -> unit
Protected Overridable Sub OnDayRender (cell As TableCell, day As CalendarDay)

Параметры

cell
TableCell

Объект TableCell, содержащий сведения об обрабатываемой ячейке.A TableCell that contains information about the cell to render.

day
CalendarDay

Объект CalendarDay, содержащий сведения об обрабатываемом дне.A CalendarDay that contains information about the day to render.

Примеры

В следующем примере кода показано, как задать и создать код обработчика для DayRender события, чтобы сделать цвет фона желтым для дней в отображаемом месяце.The following code example demonstrates how to specify and code a handler for the DayRender event to make the background color yellow for the days in the displayed month. Здесь также показано, как настроить содержимое ячейки путем добавления System.Web.UI.LiteralControl элемента управления в ячейку.It also demonstrates how to customize the contents of a cell by adding a System.Web.UI.LiteralControl control to the cell.

<%@ Page Language="C#" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>DayRender Event Example</title>
<script language="C#" runat="server">
   
      void DayRender(Object source, DayRenderEventArgs e) 
      {

         // Change the background color of the days in the month
         // to yellow.
         if (!e.Day.IsOtherMonth && !e.Day.IsWeekend)
            e.Cell.BackColor=System.Drawing.Color.Yellow;

         // Add custom text to cell in the Calendar control.
         if (e.Day.Date.Day == 18)
            e.Cell.Controls.Add(new LiteralControl("<br />Holiday"));

      }

   </script>
 
</head>
 
<body>
 
   <form id="form1" runat="server">

      <h3>DayRender Event Example</h3>
 
      <asp:Calendar id="calendar1" 
                    OnDayRender="DayRender"
                    runat="server">

         <WeekendDayStyle BackColor="gray">
         </WeekendDayStyle>

      </asp:Calendar>
                   
   </form>
          
</body>
</html>
   
<%@ Page Language="VB" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>DayRender Event Example</title>
<script language="VB" runat="server">
   
        Sub DayRender(source As Object, e As DayRenderEventArgs)
            
            ' Change the background color of the days in the month
            ' to yellow.
            If Not e.Day.IsOtherMonth And Not e.Day.IsWeekend Then
                e.Cell.BackColor = System.Drawing.Color.Yellow
            End If 
            ' Add custom text to cell in the Calendar control.
            If e.Day.Date.Day = 18 Then
                e.Cell.Controls.Add(New LiteralControl(ChrW(60) & "br" & ChrW(62) & "Holiday"))
            End If 
        End Sub 'DayRender 

   </script>
 
</head>
 
<body>
 
   <form id="form1" runat="server">

      <h3>DayRender Event Example</h3>
 
      <asp:Calendar id="calendar1" 
                    OnDayRender="DayRender"
                    runat="server">

         <WeekendDayStyle BackColor="gray">
         </WeekendDayStyle>

      </asp:Calendar>
                   
   </form>
          
</body>
</html>
   
<%@ Page Language="C#" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Calendar DayRender Example</title>
<script runat="server">
   
      void DayRender(Object sender, DayRenderEventArgs e) 
      {

         // Change the background color of the days in the month
         // to yellow.
         if (!e.Day.IsOtherMonth && !e.Day.IsWeekend)
         {
            e.Cell.BackColor=System.Drawing.Color.Yellow;
         }

         // Add custom text to cell in the Calendar control.
         if (e.Day.Date.Day == 18)
         {
            e.Cell.Controls.Add(new LiteralControl("<br />Holiday"));
         }

      }

      void Page_Load(Object sender, EventArgs e)
      {

         // Manually register the event-handling method for the DayRender  
         // event of the Calendar control.
         Calendar1.DayRender += new DayRenderEventHandler(this.DayRender);

      }

   </script>
 
</head>
 
<body>
 
   <form id="form1" runat="server">

      <h3>Calendar DayRender Example</h3>
 
      <asp:Calendar id="Calendar1" 
                    runat="server">

         <WeekendDayStyle BackColor="gray">
         </WeekendDayStyle>

      </asp:Calendar>
                   
   </form>
          
</body>
</html>
   
<%@ Page Language="VB" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Calendar DayRender Example</title>
<script runat="server">
   
      Sub DayRender(sender as Object, e As DayRenderEventArgs) 

         ' Change the background color of the days in the month
         ' to yellow.
         If (Not e.Day.IsOtherMonth) And (Not e.Day.IsWeekend) Then
        
            e.Cell.BackColor=System.Drawing.Color.Yellow
         
         End If

         ' Add custom text to cell in the Calendar control.
         If e.Day.Date.Day = 18 Then
         
            e.Cell.Controls.Add(New LiteralControl("<br />Holiday"))
         
         End If

      End Sub

      Sub Page_Load(sender As Object, e As EventArgs)

         ' Manually register the event-handling method for the DayRender  
         ' event of the Calendar control.
         AddHandler Calendar1.DayRender, AddressOf DayRender

      End Sub

   </script>
 
</head>
 
<body>
 
   <form id="form1" runat="server">

      <h3>Calendar DayRender Example</h3>
 
      <asp:Calendar id="Calendar1" 
                    runat="server">

         <WeekendDayStyle BackColor="gray">
         </WeekendDayStyle>

      </asp:Calendar>
                   
   </form>
          
</body>
</html>
   

Комментарии

Хотя привязка данных для Calendar элемента управления не поддерживается, можно изменить содержимое и форматирование отдельных ячеек даты.Although data binding is not supported for the Calendar control, it is possible to modify the content and formatting of the individual date cells. Перед отображением Calendar элемента управления на веб-странице он создает и собирает компоненты, составляющие элемент управления.Before the Calendar control is displayed on the Web page, it creates and assembles the components that make up the control. Событие возникает при создании каждой ячейки даты Calendar в элементе управления. DayRenderThe DayRender event is raised when each date cell in the Calendar control is created. Можно управлять содержимым и форматированием ячейки даты при ее создании, предоставляя код в обработчике событий для DayRender события.You can control the contents and formatting of a date cell when it is created by providing code in the event handler for the DayRender event.

Обработчик событий получает DayRenderEventArgs объект, содержащий данные события.The event handler receives a DayRenderEventArgs object that contains event data. DayRenderEventArgs Объект содержит два свойства, которые можно использовать для программного управления форматом ячейки даты.The DayRenderEventArgs object contains two properties that you can use to programmatically control the format of the date cell. Свойство представляет отображаемую ячейку, Day а свойство представляет дату для отображения в ячейке. CellThe Cell property represents the cell being rendered, while the Day property represents the date to render in the cell.

Можно также настроить содержимое ячейки, динамически добавляя элементы управления в Control.Controls коллекцию Cell свойства.You can also customize the contents of a cell by dynamically adding controls to the Control.Controls collection of the Cell property.

Примечание

Поскольку событие возникает Calendar во время подготовки элемента управления, нельзя добавить элемент управления, который также может вызывать событие, например LinkButton. DayRenderBecause the DayRender event is raised while the Calendar control is being rendered, you cannot add a control that can also raise an event, such as LinkButton. Можно добавлять только статические элементы управления, такие System.Web.UI.LiteralControlкак Label Image,, и HyperLink.You can only add static controls, such as System.Web.UI.LiteralControl, Label, Image, and HyperLink.

При возникновении события через делегат вызывается обработчик события.Raising an event invokes the event handler through a delegate. Дополнительные сведения см. в разделе обработка и вызов событий.For more information, see Handling and Raising Events.

Метод OnDayRender также позволяет производным классам обрабатывать событие, не присоединяя делегат.The OnDayRender method also allows derived classes to handle the event without attaching a delegate. Это предпочтительная методика обработки событий в производном классе.This is the preferred technique for handling the event in a derived class.

Примечания для тех, кто наследует этот метод

При переопределении метода OnDayRender(TableCell, CalendarDay) в производном классе нужно убедиться, что вызывается метод OnDayRender(TableCell, CalendarDay) базового класса, чтобы зарегистрированные делегаты получили событие.When overriding OnDayRender(TableCell, CalendarDay) in a derived class, be sure to call the base class's OnDayRender(TableCell, CalendarDay) method so that registered delegates receive the event.

Применяется к

Дополнительно