2009-08-18 8 views
1

i ont un contrôle GridView avec un texte de commentaire, bouton de lien, et invisibleGridview avec TextBox

(zone de texte et un bouton pour afficher la base de données.)

lorsque je clique sur le bouton de lien i vouloir afficher la zone de texte.

quelqu'un peut m'aider à faire cela.

mon code gridview:

<asp:GridView ID="grdComments" runat="server" AutoGenerateColumns="False"> 
<Columns> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <table width="500px" cellpadding="3" cellspacing="3"> 
       <tr/> 
        <td/> 
         <asp:Label runat="server" ID="lblLeftPad"></asp:Label> 
         <asp:Label runat="server" ID="lblComment" Text='<%# container.dataitem("CommentText") %>'></asp:Label> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <asp:LinkButton ID="lbtnReply" Text="Reply" runat="server" CommandName="CommentReply"></asp:LinkButton> 
        </td> 
       </tr> 
       <tr> 
         <td> 
          </asp:TextBox ID="txtReply" runat="server" Height="50px" Width="500px" Visible="false"></asp:TextBox> 
         </td> 
        </tr> 
       </table> 

     </ItemTemplate> 
    </asp:TemplateField> 
</Columns> 

+0

Votre code ne s'affiche pas correctement, veuillez le corriger. –

Répondre

2

Si vous ne l'utilisez alors Javascript/AJAX sur l'événement de clic du bouton lien défini la valeur visible de la zone de texte à true. Le bouton de lien envoie automatiquement un postback afin que cela fonctionne à moins que vous ayez le bouton de lien défini sur pas de publication automatique.

EDIT: Pour accéder à bouton lien

Il y a quelques façons selon la façon dont vous configurez votre réseau. S'il s'agit d'un champ de commande ou d'un champ de bouton que vous utilisez, vous pouvez utiliser RowCommand et e.CommandArgument pour définir la ligne sur laquelle vous vous trouvez et définir la zone de texte sur true. Voici un exemple:

row = Integer.Parse(e.CommandArgument) 
    GridView1.Rows(row).Cells(1).Controls(1).Visible = True 

La cellule est réglée sur la colonne que vous êtes désireux de travailler et le contrôle # est réglé sur le contrôle que vous souhaitez travailler dans la cellule. Il y a plus d'un contrôle créé dans une cellule même si vous ne mettez qu'une zone de texte. Vous pouvez utiliser la syntaxe FindControl pour obtenir plus facilement votre contrôle.

Si vous avez créé un champ basé sur un modèle avec le bouton lien, puis sur l'argument de commande pour le bouton de lien défini sa valeur à: = <% # CType (Container, GridViewRow) .RowIndex%>

et le code ci-dessus dans la commande row de la gridview fonctionnera.

OU vous pouvez définir les boutons de lien cliquez événement pour quelque chose comme:

gridview1.rows (DirectCast (expéditeur, LinkButton) .CommandArgument) .cells (1) .Controls (1) .visible = true

Vous pouvez accéder à l'événement de clic sur les boutons de liaison dans un champ modèle en modifiant le modèle à partir de l'interface graphique et en double-cliquant sur le bouton de lien.

Je vous recommande d'utiliser l'option RowCommand et d'utiliser la syntaxe FindControl pour rendre votre application plus lisible et plus facile à gérer.

+0

Le contrôle du bouton de liaison n'est pas disponible dans la page aspx.vb car il se trouve dans la vue de la grille. – vamsivanka

+0

Vous pouvez toujours accéder à l'événement de clic sur les boutons de liaison. Voir ma modification pour expliquer plus en détail les options que vous avez. :) – klabranche

+0

Oui, ça marche. Merci klabranche .. – vamsivanka