2009-11-17 5 views
1

J'ai un GridView lié à une source de données, je me demandais comment je pouvais vérifier une valeur de cellule de ligne (bool) de la ligne de la base de données étant lié, puis afficher un bouton sur les lignes où la valeur de la cellule est égale à false ..ASP.NET: Gridview Affichage d'un bouton sur une ligne, lorsqu'une cellule de ligne vlaue = false dans la ligne liée de la base de données

J'utilise OndataBound événement pour récupérer la ligne Gridview étant lié, je prends le spectacle ID , exécutez une autre procédure sur la base de données pour trouver la valeur de la cellule de la ligne de base de données correspondante .. mais je ne peux pas comprendre comment ajouter le bouton ..

existe également d'autres façons de gérer ce scénario?

Répondre

1

Solution 1: Créez un bouton avec un ID à l'endroit où vous le souhaitez dans la grille, avec un attribut visible = false. Chaque fois que vous souhaitez afficher le bouton, récupérez-le (currentGridRow.FindControl("chosen button ID")) et définissez son attribut visible sur true.

mettre votre bouton dans un TemplateField, comme ça:

<asp:TemplateField HeaderText="foobar" > 
    <ItemTemplate> 
    <asp:ImageButton ID="plusbutton" CssClass="cplusButton" ToolTip="plusButton" OnClick="buttonAdd_Click" runat="server" Visible = "false"/> 
    </ItemTemplate> 
</asp:TemplateField> 

Solution 2: créer dynamiquement le bouton (Button b = new Button; currentGridRow.Cell[].Controls.Add(b);), mais il est une douleur pour faire face à l'état d'affichage et le gestionnaire d'événements. Ne va pas comme ça.

+0

Solution 1: je ne peux pas ajouter un bouton normal, seulement ButtonField, et il n'a aucune propriété d'identification: S .. Solution 2: semble plus compliqué: D .. je tournais autour avec des propriétés, je peux faire le sthing comme Visible = <% $ some évaluant Expression%>? –

+0

Ou devrais-je juste passer à un répéteur? –

+0

a ajouté le code d'échantillon – Vinzz