我创建了一个自定义用户控件,其中包含以下表格(我稍微简化了一下以便于阅读):
<table id="tblWeekCalendar" runat="server">
<!-- .... -->
</table>
我试图在另一个页面上从Code Behind创建自定义控件:
// I'm passing values in on the constructor as an alternative to using attributes
MasterScheduleCalendar sch = new MasterScheduleCalendar(true, 123);
但是,当我尝试在构建控件时从自定义控件的代码隐藏中访问tblWeekCalendar
(来自我的自定义控件的主表)时,我发现它是null
:
HtmlTableCell tableCell = tblWeekCalendar.FindControl($"tdR{week}Day{day}") as HtmlTableCell;
此代码以从Page_Load
。
我尝试执行以下操作,而不是像this question那样直接调用构造函数,但仍然存在同样的问题:
MasterScheduleCalendar ctrl = (MasterScheduleCalendar)Page.LoadControl(typeof(MasterScheduleCalendar), new object[] { true, schedule.MasterScheduleID });
如前所述,这种情况发生在从Page_Load
事件处理程序调用的方法中,所以我对tblWeekCalendar
为null
的原因感到有些困惑。 } 在此刻。有没有人对如何解决这个问题有任何建议?
答案 0 :(得分:1)
所以你做错了。
请勿尝试访问“tblWeekCalendar”或您控件中的任何其他元素。
实现重新获取值并更新控件的方法,或者在需要时获取值的方法。
MyWeekOfTheDay week = tblWeekCalendar.GetWeekOfTheDay();
List<MyDays> days = tblWeekCalendar.GetViewDays();
List<MyMonth> months = tblWeekCalendar.GetCurrentYear().GetMonths();
类似的东西。