2008-09-17 5 views
1

Je souhaite créer un certain nombre d'extensions d'édition masquées à partir de codebehind. Quelque chose comme:Comment créer un MaskedEditExtender à la volée?

private MaskedEditExtender m_maskedEditExtender; 
protected override void OnLoad(EventArgs e) 
{ 
    base.OnLoad(e); 
    m_maskedEditExtender = new MaskedEditExtender() 
    { 
     BehaviorID = "clientName" 
    }; 
    m_maskedEditExtender.Mask = "999999999"; 
    this.Controls.Add(m_maskedEditExtender); 
} 
protected override void Render(HtmlTextWriter writer) 
{ 
    m_maskedEditExtender.RenderControl(writer); 
} 

Quand je fais cela, je reçois un NullReferenceException sur OnLoad de MaskedEditExtender. Quelle est la bonne façon de faire cela? S'il vous plaît noter que mettre l'extendeur dans un contrôle de type répéteur et en utilisant DataBind ne fonctionne pas pour moi.

Modifier: Je n'ai pas de panneau de mise à jour. Il s'avère que j'ai aussi besoin de spécifier un contrôle cible sur le serveur.

Répondre

1

Voir ASP.NET Page Life Cycle Overview si cela fait partie d'une sous-classe Page. Si vous faites défiler la liste des événements, cette page vous conseille d'utiliser l'événement PreInit pour créer des contrôles dynamiques. Il est nécessaire de le faire tôt pour s'assurer qu'ASP.NET charge proprement ViewState au bon moment, entre autres choses.

Si vous effectuez cette opération dans un contrôle utilisateur Web ou un contrôle personnalisé, remplacez CreateChildControls et faites-le dans ce champ.

Publiez un exemple de code plus complet si cela ne vous aide pas.

1

Votre exemple ne fournit pas de TargetControlID.

Avez-vous un updatePanel sur la page? J'ai rencontré des problèmes lors de la création dynamique d'extensions car elles n'étaient pas ajoutées au contenu de updatePanel.

Je pense aussi que vous devez faire quelque chose avec le ScriptManager (enregistrement du prolongateur) mais je pourrais me tromper (je n'ai pas accès au code que j'ai fait prolongateurs dynamiques pour le moment).

0

Fournissez la valeur TargetControlID appropriée à MaskedEditExtender

Questions connexes