Así que actualmente estoy agregando una colección de controles de usuario a una Colección de Panel.
Aquí está ese código
foreach (IssuePoll poll in issuePollList)
{
IssuePollsUC issuePoll = (IssuePollsUC)Page.LoadControl("~/UserControls/IssuePollsUC.ascx");
issuePoll.LoadPoll(poll, false, politician.PoliticianID);
pnlUnFinishedTest.Controls.Add(issuePoll);
}
Estoy tratando de obtener esos controles de usuario para poder llamar a un método de validación y guardar dentro de cada uno de esos controles. Aquí está el código que estoy usando para eso, pero no está funcionando.
foreach (Control control in pnlUnFinishedTest.Controls)
{
IssuePollsUC issuePolls = (IssuePollsUC)control;
issuePolls.SavePollAnswer(appUser.User.PersonID);
}
Recibo un mensaje de error en el convertido, dice
"No se puede convertir el objeto de tipo" System.Web.UI.LiteralControl "para escribir" UserControls.IssuePollsUC ""
EDITAR: Parece que el problema radica en el hecho de que un Control no se puede convertir en (Control de Usuario)
Respuestas
0 para la respuesta № 1Hay otros controles en su panel además del control de usuario, es decir, el literal que está causando que falle la conversión. Tratar
foreach (Control control in pnlUnFinishedTest.Controls)
{
IssuePollsUC issuePolls = control as IssuePollsUC;
if(issuePolls != null)
{
issuePolls.SavePollAnswer(appUser.User.PersonID);
}
}
Esto hará que sea más seguro.
EDITAR
Tenga en cuenta que debe agregar controles dinámicos en el Page_Init
evento no Page_Load
o en cualquier otro lugar. Sospecho que sus controles ni siquiera están allí, no los agrego Page_Init
significa que no están en ViewState
y no estará presente en ninguna colección de control.