将onSelectChanged事件添加到动态创建的日历中

本文关键字:创建 日历 动态 onSelectChanged 事件 添加 | 更新日期: 2023-09-27 17:57:26

在我的.ascx用户控件中,我有一些ImageButton元素,当单击这些元素时,它们会动态创建,然后显示日历元素,将其添加到占位符中。我有三个,该函数将根据单击的ImageButton的ID为每个日历生成一个ID。我正在尝试为创建的每个日历动态添加SelectionChanged事件。

我在类的开头声明了一个空的对象日历作为全局变量。我在PageLoad上实例化了一个新的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);
}

}

仍然不起作用,活动没有附在日历上,还缺少什么?

将onSelectChanged事件添加到动态创建的日历中

初始化日历,将其添加到页面的控件集合中,并在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";

这行不通。如果需要多个按钮的日历,请添加多个日历。