2009-09-13 37 views
6

Todo lo que quiero hacer es poner un botón asp: en el encabezado de una vista de cuadrícula. Digamos que tiene una vista de cuadrícula con 3 columnas: id, nombre, familia. Entonces, en lugar de un encabezado [id, name, family] quiero que sea [id, name, asp: button] - por lo que el botón tendrá su acción, por supuesto.¿Cómo poner un botón en un encabezado de ASP.NET gridview?

Gracias, Roman.

Respuesta

0

estos son de hecho LinkButtons. puede usar css para darles la apariencia de un real botón. Sin embargo

, sería casi elegante, mientras que la tendencia en el diseño está en uso enlaces de datos en lugar de botones (busque en cualquier aplicación de Internet más populares que amas, inc. éste)

+0

Creo que no me despejé, no quiero que tenga la misma acción que los LinkButtons que ya están allí. Quiero poner mi botón con una acción diferente (como ir a otra página). Gracias. –

+0

si solo desea insertar es aún más simple. use jQuery (o cualquier otra js lib) para hacerlo en una sola línea de código. –

11

El enfoque que necesitará tomar es hacer que la columna GridView deseada sea un campo de plantilla. Cuando utiliza campos de plantilla, puede pegar cualquier control asp.net en cada sección principal del control gridview (encabezado, elemento, pie de página, etc.). No he probado esto, pero en principio parece que esto:

 <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> 

para "capturar" el evento de su botón de clic y hacer algo con él lo que necesita para utilizar evento RowCommand del GridView (aquí hay un punto de partida - de nuevo no probado):

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 magia aquí es en la asignación de la propiedad de su CommandName botón (en este caso me puse a "FamilyClicked", pero puede ser cualquier cosa que desee).

Aquí es algunos fundamentos más sobre la tecnología de campo de plantilla utiliza el GridView - link text

Espero que ayude.

Cuestiones relacionadas