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 に答える