В моем пользовательском элементе управления .ascx у меня есть некоторые элементы ImageButton, и при их нажатии они динамически создаются, а затем отображают элемент Calendar, добавляя его в PlaceHolder. У меня есть три из них, и функция будет генерировать идентификатор для каждого календаря, созданного с помощью идентификатора ImageButton, который щелкнут. Я пытаюсь динамически добавлять событие SelectionChanged для каждого созданного календаря.Добавление события onSelectChanged в динамически создаваемые календари
Я объявил пустой календарь объектов как глобальную переменную в начале класса. Я создаю экземпляр нового объекта Calendar onPageLoad, при событии click я добавляю идентификатор, событие и добавляю его в местозаполнитель.
Событие 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);
}
}
Тем не менее не работает, событие не привязан к календарю, что до сих пор не хватает?
Хорошо, у меня есть три элемента ImageButton, каждый из которых имеет отдельную функцию события onClick, которая выполняет те же действия, но создает разные календари с разными идентификаторами. У меня все получилось? – user3523583
@ user3523583: все кнопки могут использовать один и тот же клик evnt-обработчик, но вам нужно три календаря, если вы хотите иметь три идентификатора. Вы также можете использовать один календарь, но потом я не понимаю, почему вы назначаете идентификатор в кнопке click-click habdler. Вы не можете сделать это в обработчике событий, поскольку это слишком поздно в жизненном цикле страницы. –