从里面的ControlCollection获取用户控件(Get UserControl from i

2019-10-16 13:29发布

所以,我目前加入用户控件的面板集合的集合。

下面是代码

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’”

编辑:看来问题就出在这样一个事实:控制不能转换成(用户控制)

Answer 1:

有比你的用户控件即是造成投失败字面之外的其他面板其他控件。 尝试

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并不会出现在任何控件集合。



文章来源: Get UserControl from inside ControlCollection