2009-10-30 42 views
10

Tengo un GridView. My GridView tiene una columna que contiene una columna de "Opciones". Esta columna incluye las opciones tradicionales de CommandField (editar, eliminar, etc.). Tengo la configuración del código para trabajar cuando se usa un CommandField. Sin embargo, necesito hacer un poco de formato personalizado, así que necesitaba convertir CommandField a TemplateField.ASP.NET + GridView + CommandField como TemplateField

Mi pregunta es, ¿cómo desencadenar los eventos OnRowCommand, OnRowEditing, OnRowDeleting y OnRowUpdating de los diversos elementos LinkButton en mi TemplateField?

¡Gracias!

Respuesta

22

Todo lo que tiene que hacer es establecer la propiedad CommandName del LinkButton dentro de la columna de su plantilla en 'Editar' para editar, 'Eliminar' para eliminar y 'Actualizar' para actualizar. Esto activará los eventos GridView RowEditing, RowDeleting y RowUpdating, respectivamente. Para desencadenar el evento RowCommand, debe establecer la propiedad OnRowCommand de su control GridView.

<asp:GridView ID="GridView1" runat="server" OnRowCommand="GridView1_RowCommand" 
    OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing" 
    OnRowUpdating="GridView1_RowUpdating"> 
<Columns> 
    <asp:TemplateField> 
     <ItemTemplate> 
      <!--To fire the OnRowEditing event.--> 
      <asp:LinkButton ID="lbEdit" runat="server" CommandName="Edit" 
       Text="Edit"> 
      </asp:LinkButton> 
      <!--To fire the OnRowDeleting event.--> 
      <asp:LinkButton ID="lbDelete" runat="server" CommandName="Delete" 
       Text="Delete"> 
      </asp:LinkButton> 
      <!--To fire the OnRowUpdating event.--> 
      <asp:LinkButton ID="lbUpdate" runat="server" CommandName="Update" 
       Text="Update"> 
      </asp:LinkButton> 
     </ItemTemplate> 
    </asp:TemplateField> 
</Columns>  
</asp:GridView> 
12

Tuve el mismo problema.

Para editar, hice lo siguiente:

 <asp:TemplateField ShowHeader="False"> 
      <ItemTemplate> 
       <asp:LinkButton ID="EditButton" 
           runat="server" 
           CommandName="Edit" 
           Text="Edit" /> 
      </ItemTemplate> 
      <EditItemTemplate> 
       <asp:LinkButton ID="UpdateButton" 
           runat="server" 
           CommandName="Update" 
           Text="Update" />&nbsp; 
       <asp:LinkButton ID="Cancel" 
           runat="server" 
           CommandName="Cancel" 
           Text="Cancel" /> 
      </EditItemTemplate> 
     </asp:TemplateField> 

Esto permite que la muestra/ocultación de la actualización y Cancelar.

En cuanto a la cancelación, que utilizó la siguiente:

<asp:TemplateField> 
     <ItemTemplate> 
      <asp:LinkButton ID="DeleteButton" 
          Text="Delete" 
          CommandName="Delete" 
          runat="server" /> 
     </ItemTemplate> 
    </asp:TemplateField> 
1

clic en Columnas en propiedades, añadir CommandField(Edit,update,Cancel) y haga clic en el "Convertir este campo para TemplateField"

Swich a la Fuente y automáticamente va a agregar un código

Cuestiones relacionadas