2011-02-25 725 views
6

Necesito crear varias acciones para una vista de cuadrícula, por ejemplo, "Aprobar", "Denegar" y "Volver".asp.net gridview: ¿Cómo puedo tener campos de botones múltiples en una columna?

puedo hacer esto mediante la creación de un campo de botón para cada acción:

<asp:ButtonField ButtonType="Link" CommandName="Approve" Text="Approve" /> 
<asp:ButtonField ButtonType="Link" CommandName="Deny" Text="Deny /> 
<asp:ButtonField ButtonType="Link" CommandName="Return" Text="Deny" /> 

Sin embargo, esto crea una columna para cada botón.

¿Hay alguna manera de tener la misma funcionalidad pero combinarla en una sola columna?

Respuesta

8

¿Ha considerado usar un TemplateField? Aquí está un ejemplo:

<asp:GridView ID="grdTest" runat="server"> 
    <Columns> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:LinkButton ID="btnApprove" runat="server" CommandName="Approve" Text="Approve" /> 
       <asp:LinkButton ID="btnDeny" runat="server" CommandName="Deny" Text="Deny" /> 
       <asp:LinkButton ID="btnReturn" runat="server" CommandName="Return" Text="Return" /> 
      </ItemTemplate>     
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

entonces usted puede capturar los comandos de la misma manera exacta con OnRowCommand o hacer lo que quiera. Usted tiene el control total para que se comporte como lo necesita y no se vea obligado por la funcionalidad integrada de usar los tipos de columnas predefinidos regulares.

+0

+1 ya que es la respuesta aceptada – Alex

3

tratar de poner botones en el lugar <asp:TemplateField>:

<asp:TemplateField> 
    <ItemTemplate> 
     <asp:LinkButton CommandName="Approve" Text="Approve" /> 
     <asp:LinkButton CommandName="Deny" Text="Deny /> 
     <asp:LinkButton CommandName="Return" Text="Deny" /> 
    </ItemTemplate> 
</asp:TemplateField> 
2

La solución no es utilizar elementos ButtonField.

para lograr lo que desea, tendrá que crear una columna como TemplateField y definir botones como ASP.NET regulares <asp:Button id="myButton" /> dentro TemplateField 's ItemTemplate o EditItemTemplate según corresponda a su interfaz de usuario.

Puede manejar eventos de clics en el controlador GridView_OnItemCommand(), donde puede marcar e.CommandName para averiguar exactamente qué botón causó el evento.

Cuestiones relacionadas