调用日历控件中的Checkbox CheckedChanged事件

本文关键字:Checkbox CheckedChanged 事件 日历 控件 调用 | 更新日期: 2023-09-27 18:15:24

目前我正在做一个Asp。Net应用程序。. Net日历控件和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...
    }

调用日历控件中的Checkbox CheckedChanged事件

Calendar的DayRender事件正如它所说的那样——它是在呈现过程中触发的事件,就在呈现给定日期的单元格之前。由于此事件在页生命周期的后期触发,因此不能添加触发事件的控件。

来自Calendar文档:

"因为在呈现Calendar控件时引发DayRender事件,所以您不能添加也可以引发事件的控件,例如CheckBox。您只能添加静态控件,例如文字控件、标签、图像和超链接。"

解决方案。