将 onSelectChanged 事件添加到动态创建的日历
Adding onSelectChanged event to a dynamically created calendars
在我的 .ascx 用户控件中,我有一些 ImageButton 元素,当单击这些元素时,它们会动态创建,然后显示将其添加到 PlaceHolder 的日历元素。我有三个,该函数将为每个根据单击的 ImageButton 的 ID 创建的日历生成一个 ID。我正在尝试为创建的每个日历动态添加一个 SelectionChanged 事件。
我在 class 的开头声明了一个空对象 calendar 作为全局变量。我在页面加载上实例化了一个新的日历对象,在单击事件中我添加了 ID、事件并将其添加到占位符。
SelectChange 事件似乎不起作用。缺少什么?
public partial class admin_CaptureDate : System.Web.UI.UserControl
{
protected Calendar DateCalendar;
protected void Page_Init(object sender, EventArgs e)
{
DateCalendar = new Calendar();
DateCalendar.ID = "DateCalendar";
DateCalendar.Width = 176;
DateCalendar.SelectionChanged += Calendar_SelChanged;
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ShowCalendar_Click(object sender, ImageClickEventArgs e)
{
ImageButton btnSender = (ImageButton)sender;
string Prefix = btnSender.ID.Substring(14);
Trace.Write("this is prefix " + Prefix);
this.FindControl(Prefix + "PlaceHolder").Controls.Add(DateCalendar);
}
protected void Calendar_SelChanged(object sender, EventArgs e)
{
Calendar SelectedCalendar = (Calendar)sender;
string SelectedDate = SelectedCalendar.SelectedDate.ToLongDateString();
Trace.Write("this is the selected date" + SelectedDate);
}
}
还是不行,事件没有附加到日历,还缺少什么?
初始化日历,将其添加到页面的控件集合中并在 Page_Init
中添加事件处理程序。事件来得太晚了。
protected void Page_Init(object sender, EventArgs e)
{
DateCalendar = new Calendar();
DateCalendar.SelectionChanged += Calendar_SelChanged;
}
他们还必须始终获得与以前相同的 ID。不过好像是根据这里的Button.ID
改了ID:
string Prefix = btnSender.ID.Substring(14);
DateCalendar.ID = Prefix + "Calendar";
那是行不通的。如果您需要多个按钮的日历,请添加多个日历。
在我的 .ascx 用户控件中,我有一些 ImageButton 元素,当单击这些元素时,它们会动态创建,然后显示将其添加到 PlaceHolder 的日历元素。我有三个,该函数将为每个根据单击的 ImageButton 的 ID 创建的日历生成一个 ID。我正在尝试为创建的每个日历动态添加一个 SelectionChanged 事件。
我在 class 的开头声明了一个空对象 calendar 作为全局变量。我在页面加载上实例化了一个新的日历对象,在单击事件中我添加了 ID、事件并将其添加到占位符。
SelectChange 事件似乎不起作用。缺少什么?
public partial class admin_CaptureDate : System.Web.UI.UserControl
{
protected Calendar DateCalendar;
protected void Page_Init(object sender, EventArgs e)
{
DateCalendar = new Calendar();
DateCalendar.ID = "DateCalendar";
DateCalendar.Width = 176;
DateCalendar.SelectionChanged += Calendar_SelChanged;
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ShowCalendar_Click(object sender, ImageClickEventArgs e)
{
ImageButton btnSender = (ImageButton)sender;
string Prefix = btnSender.ID.Substring(14);
Trace.Write("this is prefix " + Prefix);
this.FindControl(Prefix + "PlaceHolder").Controls.Add(DateCalendar);
}
protected void Calendar_SelChanged(object sender, EventArgs e)
{
Calendar SelectedCalendar = (Calendar)sender;
string SelectedDate = SelectedCalendar.SelectedDate.ToLongDateString();
Trace.Write("this is the selected date" + SelectedDate);
}
}
还是不行,事件没有附加到日历,还缺少什么?
初始化日历,将其添加到页面的控件集合中并在 Page_Init
中添加事件处理程序。事件来得太晚了。
protected void Page_Init(object sender, EventArgs e)
{
DateCalendar = new Calendar();
DateCalendar.SelectionChanged += Calendar_SelChanged;
}
他们还必须始终获得与以前相同的 ID。不过好像是根据这里的Button.ID
改了ID:
string Prefix = btnSender.ID.Substring(14);
DateCalendar.ID = Prefix + "Calendar";
那是行不通的。如果您需要多个按钮的日历,请添加多个日历。