Я создал очень простой пользовательский элемент управления календаря, который содержит открытое свойство, которое используется для определения, какой месяц / год отображать.Мой элемент управления календаря находится внутри другого элемента управления ascx (по сути, элемента управления-оболочки), который включает элементы управления LinkButton, используемые для переключения элемента управления календаря вперед и назад по одному месяцу за раз.Если я явно определю свойство SelectedDateTime элемента управления календаря в элементе управления оболочкой во время разработки, соответствующий месяц / год будут отображаться элементом управления календаря.Однако, когда я пытаюсь установить значение свойства во время выполнения, используя событие Click на предыдущем и следующем элементах управления LinkButton, элемент управления Calendar никогда не получает новое значение SelectedDateTime, которое я пытаюсь присвоить ему.
Когда яПри запуске кода в режиме отладки событие Click LinkButton всегда происходит последним - после того, как значение свойства SelectedDateTime элемента управления календаря уже установлено в значение по умолчанию и обработано.Чего мне не хватает?
Элемент управления календаря помещен в элемент управления оболочки, как и любой старый элемент управления:
<wsba:CalendarBase ID="CalendarControl" runat="server" />
Я создал элемент управления LinkButton, чтобы выбрать «Следующий месяц», и его соответствующийЩелкните обработчик события, например, так:
protected void NextMonthLink_Click(object sender, EventArgs e)
{
CalendarControl.SelectedDateTime = CalendarControl.SelectedDateTime.AddMonths(1);
}
Это основа самого элемента управления календаря:
public partial class CalendarBase : System.Web.UI.UserControl
{
public DateTime SelectedDateTime { get; set; }
public List<Item> SelectedCalendars { get; set; }
public CalendarBase()
{
// default SelectedDateTime to Now if no value was set
if (SelectedDateTime.Year.Equals(1)) { SelectedDateTime = DateTime.Now; }
}
protected void Page_Load(object sender, EventArgs e)
{
// grab the month and year from the selectedDateTime
int selectedMonth = SelectedDateTime.Month;
int selectedYear = SelectedDateTime.Year;
... Do the rest of the stuff to render my control ...
}