Динамическое добавление UserControl к событию DayRender элемента управления Calendar - PullRequest
1 голос
/ 07 октября 2009

У меня есть простой UserControl, который я хочу отображать в каждой ячейке календаря. Я хотел бы, чтобы он отображал различную информацию на основе набора данных, передавая изменение некоторых свойств, представленных в UserControl. По какой-то причине это не работает. Мне интересно, если цикл страницы не позволяет этому работать правильно, как это работает, если я загружаю элемент управления на событие PageLoad.

например.

protected void Cal1_DayRender(object sender, DayRenderEventArgs e)
{

  foreach (var item in MyDataSet.Where(s=>s.AvailibilityDate.Date == e.Day.Date))
            {

//the days match. Render a the usercontrol setting some property values to alter the rendering of the control

MyUserControl userControl = Page.Loadcontrol("~/UserControls/MyUserControl.ascx") as MyUserControl;
if(userControl != null)
{

//set the properties

userControl.DisplayText = item.PersonsFullName;

   e.Cell.Controls.Add(userControl );
}

}    

}

UserControl содержит свойство DisplayText, которое устанавливает значение текстового значения литерального элемента управления в методе OnInit.

Есть идеи ??

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 08 октября 2009

См. Мой ответ на аналогичный вопрос. Я нашел способ, но это не красиво.

0 голосов
/ 08 октября 2009

После исследования выясняется, что событие DayRender происходит слишком поздно в жизненном цикле страницы, чтобы добавить элементы управления с событиями. Вот почему мой метод init не запускает и не обновляет текстовое значение буквальных элементов управления.

Похоже, мне может понадобиться написать простой класс и переопределить метод ToString () для записи необходимого HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...