Получить UserControl из ControlCollection - PullRequest
1 голос
/ 20 января 2012

Итак, я сейчас добавляю коллекцию пользовательских элементов управления в коллекцию Panel.

Вот этот код

foreach (IssuePoll poll in issuePollList)
{
     IssuePollsUC issuePoll = (IssuePollsUC)Page.LoadControl("~/UserControls/IssuePollsUC.ascx");
     issuePoll.LoadPoll(poll, false, politician.PoliticianID);
     pnlUnFinishedTest.Controls.Add(issuePoll);
}

Я пытаюсь получить эти usercontrols, чтобы я мог вызвать метод validate и сохранить метод внутри каждого из этих элементов управления. Вот код, который я использую для этого, но он не работает.

foreach (Control control in pnlUnFinishedTest.Controls)
{
     IssuePollsUC issuePolls = (IssuePollsUC)control;
     issuePolls.SavePollAnswer(appUser.User.PersonID);
}

Я получаю сообщение об ошибке на конверте, там написано

"Невозможно привести объект типа 'System.Web.UI.LiteralControl' к типу 'UserControls.IssuePollsUC'"

РЕДАКТИРОВАТЬ: похоже, проблема заключается в том, что элемент управления не может быть преобразован в (пользовательский элемент управления)

1 Ответ

0 голосов
/ 20 января 2012

На вашей панели есть другие элементы управления, кроме вашего пользовательского, т.е. литерал, который вызывает сбой приведения.Попробуйте

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 и не будут присутствовать ни в одной коллекции элементов управления.

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