0

現在、私は Asp.Net アプリに取り組んでいます。Asp.Net Calendar コントロールと OnDayRender() メソッドがあり、その中に Checkbox コントロールを動的に追加しています。CheckedChanged イベント ハンドラーもアタッチしています。しかし、チェックボックスをクリックするたびに、サーバー側の CheckedChanged() メソッドが呼び出されません。どんな助けでも本当に感謝します。ありがとう。

Asp.Net コード:

     <div>  
         <asp:Calendar  
            ID="Calendar1"   
            runat="server"  
            NextPrevFormat="FullMonth"  
            ForeColor="WhiteSmoke"  
            SelectionMode="Day"  
            DayNameFormat="Full"  
            Font-Names="Book Antiqua"  
            Font-Size="Medium"  
            OnDayRender="Calendar1_DayRender">  
        </asp:Calendar>  
    </div>  

サーバ側:

    protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)  
    {  
            CheckBox checkBox1 = new CheckBox();  
            checkBox1.AutoPostBack = true;  
            checkBox1.Width = 25;  
            checkBox1.Enabled = false;  
            checkBox1.CheckedChanged = checkBox1_CheckedChanged;
            e.Cell.Controls.AddAt(1, checkBox1);  
            e.Cell.Font.Size = FontUnit.XLarge;  
    }  


    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        // Do some operation...
    }
4

1 に答える 1

1

カレンダーのDayRenderイベントはまさにその通りです。これは、指定された日のセルがレンダリングされる直前に、レンダリング プロセス中に発生するイベントです。このイベントはページ ライフ サイクルの後半で発生するため、イベントを発生させるコントロールを追加することはできません。

カレンダーのドキュメントから:

「Calendar コントロールのレンダリング中に DayRender イベントが発生するため、CheckBox などのイベントを発生させることもできるコントロールを追加することはできません。追加できるのは、LiteralControl、Label、Image、HyperLink などの静的コントロールのみです。」

回避策はこちら

于 2013-05-27T09:41:41.117 に答える