将UserControl动态添加到Calendar Control的DayRender事件

时间:2009-10-07 11:27:52

标签: c# asp.net user-controls calendar

我有一个简单的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 :(得分:0)

在研究完之后,似乎DayRender事件在页面生命周期中发生得太晚,无法添加带事件的控件。这就是我的init方法没有触发和更新文字控件文本值的原因。

看起来我可能需要编写一个简单的类并覆盖ToString()方法来写出必要的HTML。

答案 1 :(得分:0)

查看我的answer类似问题。我找到了一种方法,但它并不漂亮。