2010-12-10 87 views
0

D'après les valeurs de test d'un panneau/label existant dans un ItemTemplate (utilise Column1), je souhaite ajouter un autre panneau/label dans le même ItemTemplate (affiche Column2).Ajouter dynamiquement un contrôle de panneau ou d'étiquette à une grille de données

Ceci est à l'intérieur d'un contrôle personnalisé (.ascx) que je veux contrôler l'ajout d'un <asp:Panel> particulier basé sur si elle (ou un autre panneau) a une valeur particulière ou non. Sinon, je ne veux pas que le <asp:Panel> soit créé (ne devrait pas générer le <div> lors de l'exécution). Si oui, je veux générer le <asp:Panel> intérieur la

<asp:DataGrid><Columns><ItemTemplate> 

Exemple: En supposant que nous obtenons la valeur Colonne2 comme prévu, je veux rendre cette valeur que si elle est pas « 0 », sinon je ne voulez créer la balise supplémentaire à l'intérieur du <ItemTemplate> donné. Je vais contrôler quand il est rendu basé sur un autre tag.

If(Column2!='0') 
//Adding some condition for Column1 ... 
    Create the `<div>` tag i.e Add the `<asp:Panel>` 

Comment appeler ce code également? Cela signifie que le html généré aura les balises div/span supplémentaires dans certains cas et ne devrait pas avoir les balises générées dans d'autres cas. Cela peut-il être fait en évitant Javascript.

+0

Quel cadre? widget? etc? Où est la question de toute façon? –

+0

Si c'est asp.net, alors la réponse est oui. Vous pouvez reformuler et développer votre question avec du code pour obtenir une réponse plus utile. – Kendrick

Répondre

0

On pourrait utiliser le contrôle <asp:PlaceHolder> pour placer le contrôle à un certain endroit dans le .ascx disent: <asp:PlaceHolder id="placeHere" runat="server /> et déterminer, en fonction de l'autre contrôle si cela doit être ajouté. Exemple:

If(Column1 condition) 
{ 
    Label addToGrid = new Label(); 
    addToGrid.Text = column1; 
    addToGrid.Visible = true; 
    placeHere.Controls.Add(addToGrid); 
}