所以我目前正在向Panel Collection添加一组usercontrol。
这是代码
foreach (IssuePoll poll in issuePollList)
{
IssuePollsUC issuePoll = (IssuePollsUC)Page.LoadControl("~/UserControls/IssuePollsUC.ascx");
issuePoll.LoadPoll(poll, false, politician.PoliticianID);
pnlUnFinishedTest.Controls.Add(issuePoll);
}
我正在尝试获取这些用户控件,因此我可以调用validate方法并在每个控件中保存方法。这是我正在使用的代码,但它不起作用。
foreach (Control control in pnlUnFinishedTest.Controls)
{
IssuePollsUC issuePolls = (IssuePollsUC)control;
issuePolls.SavePollAnswer(appUser.User.PersonID);
}
我在转换时收到错误消息,它说
“无法将'System.Web.UI.LiteralControl'类型的对象强制转换为'UserControls.IssuePollsUC'”
编辑:看起来问题在于控件无法转换为(用户控件)
答案 0 :(得分:0)
除了用户控件之外,面板中还有其他控件,即导致转换失败的文字。尝试
foreach (Control control in pnlUnFinishedTest.Controls)
{
IssuePollsUC issuePolls = control as IssuePollsUC;
if(issuePolls != null)
{
issuePolls.SavePollAnswer(appUser.User.PersonID);
}
}
这将使其更安全。
修改强>
请注意,您必须在Page_Init
事件中添加动态控件,而不是Page_Load
或其他任何地方。我怀疑你的控件不在那里 - 不在Page_Init
中添加它们意味着它们不在ViewState
中并且不会出现在任何控件集合中。