在Calendar控件中调用Checkbox CheckedChanged事件

时间:2013-05-27 09:33:01

标签: c# asp.net postback

目前我正在开发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...
    }

1 个答案:

答案 0 :(得分:1)

日历的DayRender事件正是它所说的 - 它是在渲染过程中触发的事件,就在呈现给定日期的单元格之前。由于此事件在页面生命周期中触发,因此您无法添加触发事件的控件。

来自Calendar documentation

“因为在呈现Calendar控件时引发了DayRender事件,所以无法添加也可以引发事件的控件,例如CheckBox。您只能添加静态控件,例如 LiteralControl,Label,Image和HyperLink。“

解决方法here