Je suis en mesure de créer des contrôles Pro à l'aide du code ci-dessous grammaticalement sans problème:Problème Création d'instances de l'utilisateur ASP.NET contrôles Programmatically
FileListReader fReader = (FileListReader)LoadControl("~/Controls/FileListReader.ascx");
phFileLists.Controls.Add(fReader);
Cependant, je voudrais changer le contrôle afin que je puisse donner un constructeur comme ceci:
public FileListReader(Int32 itemGroupId, Int32 documentType, String HeaderString, String FooterString, bool isAdminUser)
{
base.Construct();
this.itemGroupId = itemGroupId;
this.documentType = documentType;
this.HeaderString = HeaderString;
this.FooterString = FooterString;
this.isAdminUser = isAdminUser;
}
et je devrais être en mesure d'appeler le contrôle comme celui-ci:
FileListReader fReader = (FileListReader)LoadControl(typeof(FileListReader), new Object[] { itemGroupId, 6, "Sell Sheets", "<br /><br />", isAdminUser });
Cependant, quand je fais cela, je reçois toujours une erreur que mes contrôles in page dans mon contrôle FileListReader n'ont pas été instanciés et j'obtiens une erreur de référence nulle. Ainsi, par exemple, j'ai un contrôle <asp:Label></asp:label>
qui fait une erreur lorsque j'essaie de définir son texte sur la méthode Page_Load. Qu'est-ce qui cause ça? Je pensais que le base.Construct()
aurait résolu ce problème, mais il n'a évidemment pas.
Je reçois toujours une erreur 'référence d'objet non définie à une instance de un objet.' pour la même raison, même avec le: base() –
votre premier extrait de code, où vous créez et ajoutez le contrôle ... dans quelle méthode faites-vous cela? –
Je le fais depuis 'Page_Load' –