目前我正在开发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...
}
答案 0 :(得分:1)
日历的DayRender
事件正是它所说的 - 它是在渲染过程中触发的事件,就在呈现给定日期的单元格之前。由于此事件在页面生命周期中触发,因此您无法添加触发事件的控件。
“因为在呈现Calendar控件时引发了DayRender事件,所以无法添加也可以引发事件的控件,例如CheckBox。您只能添加静态控件,例如 LiteralControl,Label,Image和HyperLink。“
解决方法here。