2009-09-13 10 views
6

Tout ce que je veux faire est de mettre un bouton asp: dans l'en-tête d'un gridview. Disons que vous avez une vue de grille avec 3 colonnes - id, nom, famille. Donc, au lieu d'un en-tête [id, nom, famille] je veux que ce soit [id, name, asp: button] - donc le bouton aura son action bien sûr.Comment mettre un bouton dans un en-tête de gridview ASP.NET?

Merci, Roman.

Répondre

0

ce sont en fait des LinkButtons. vous pouvez utiliser css pour leur donner l'aspect d'un bouton réel.

cependant, il ne serait guère élégant, alors que la tendance dans la conception est en fait utiliser des liens au lieu des boutons (regardez une application web populaire que vous aimez, inc. Celui-ci)

+0

Je suppose que je ne me suis pas fait comprendre - je ne veux pas qu'il ait la même action que les LinkButtons déjà là - je veux mettre mon bouton avec une action différente (comme aller à une autre page). Merci. –

+0

si vous voulez simplement insérer c'est encore plus simple. utilisez jQuery (ou tout autre js lib) pour le faire dans une seule ligne de code. –

11

L'approche que vous aurez besoin prendre est de faire de cette colonne GridView désirée un champ de modèle. Lorsque vous utilisez des champs de modèle, vous pouvez coller tous les contrôles asp.net dans chaque section principale du contrôle gridview (en-tête, élément, pied de page, etc.). Je n'ai pas testé, mais en principe, il ressemble à ceci:

 <asp:GridView ID="Gridview1" runat="server"> 
     <Columns> 
      <asp:BoundField DataField="yourDbColumnName" HeaderText="id" /> 
      <asp:BoundField DataField="yourDbColumnName" HeaderText="name" /> 
      <asp:TemplateField> 
       <HeaderTemplate> 
        <asp:Button runat="server" ID="btnFamily" CommandName="FamilyClicked" /> 
       </HeaderTemplate> 
       <ItemTemplate> 
        <asp:Literal runat="server" ID="litFamily" Text='<%# EVAL("YourDbColumnValue") %>'></asp:Literal> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

Pour « capture » événement de clic de votre bouton et faire quelque chose que vous devez utiliser l'événement RowCommand du GridView (est ici un point de départ - encore une fois non testé):

Protected Sub Gridview1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles Gridview1.RowCommand 
    If e.CommandName = "FamilyClicked" Then 
     ' they clicked by grid view header's asp:button control... 
     Response.Write("TEST") 
    End If 
End Sub 

la magie est ici dans l'attribution des biens CommandName (dans ce cas de votre bouton je l'ai mis à « FamilyClicked » mais il peut être tout ce que vous voulez).

Voici quelques plus fondamentaux sur la technologie champ modèle GridView utilise - link text

espoir qui aide.

Questions connexes