Como: Responder a eventos de botão em um controle GridView

Quando um botão for clicado em um GridView controle, o RowCommand evento é gerado. The GridView controle tem funcionalidade interna para operações, sistema autônomo edição, excluir e paginação. Você também pode adicionar botões e usar o RowCommand evento para adicionar funcionalidade personalizada ao controle.

Você pode adicionar funcionalidade personalizada a um GridView controle das seguintes maneiras:

Você pode usar o CommandName propriedade do argumento de evento para identificar a função do botão no método do manipulador de eventos. Se você estiver trabalhando com ButtonField ou TemplateField objetos, você também pode usar o CommandArgument propriedade para identificar a linha corrente. Quando você estiver usando um ButtonField objeto, o CommandArgument propriedade é conjunto automaticamente para o índice da linha. Quando você estiver usando um TemplateField objeto, o CommandArgument propriedade não é definida automaticamente pelo controle. Nesse caso, se você precisar determinar o índice da linha na manipulador de eventos, você pode conjunto o CommandArgument propriedade do botão para o índice da linha usando uma expressão de vinculação de dados.

Para responder a eventos de botão no controle GridView

  1. conjunto CommandNamepropriedade para uma seqüência de caracteres que identifica sua função, sistema autônomo "Imprimir" ou "Copiar".

  2. Se você estiver usando o TemplateField objeto e precise acessar o índice da linha no manipulador de eventos método, conjunto o botão CommandArgument propriedade para uma expressão que identifica a linha corrente.

    O exemplo a seguir mostra como você pode conjunto o CommandArgument propriedade de um botão em um TemplateField coluna para o índice da linha corrente. No exemplo, a coluna contém um Button controle que exibe um carrinho de compras.

    <asp:TemplateField>
      <ItemTemplate>
        <asp:Button ID="AddButton"  
          CommandName="AddToCart" 
          CommandArgument="<%# CType(Container,GridViewRow).RowIndex %>"
          Text="Add to Cart" />
      </ItemTemplate> 
    </asp:TemplateField>
    
    <asp:TemplateField>
      <ItemTemplate>
        <asp:Button ID="AddButton"  
          CommandName="AddToCart" 
          CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
          Text="Add to Cart" />
      </ItemTemplate> 
    </asp:TemplateField>
    
  3. Crie um método para o RowCommand evento da GridView controle. No método, faça o seguinte:

    1. Verifique a propriedade CommandName do objeto de evento-argumento para ver se a sequência de caracteres foi passada.

    2. Recuperar o índice da linha que contém o botão usando o CommandArgument propriedade, se necessário.

    3. Execute a lógica apropriada para o botão que o usuário clicou.

    O exemplo a seguir mostra como você pode responder ao clique de um botão de um controleGridView.No exemplo, um botão em um TemplateFieldcoluna envia o comando "AddToCart". The RowCommand evento manipulador determina qual botão foi clicado. Se fosse o botão de carrinho de compras, o código executa a lógica apropriada.

    Protected Sub GridView1_RowCommand(ByVal sender As Object, _
      ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs)
      If (e.CommandName = "AddToCart") Then
        ' Retrieve the row index stored in the CommandArgument property.
        Dim index As Integer = Convert.ToInt32(e.CommandArgument)
    
        ' Retrieve the row that contains the button 
        ' from the Rows collection.
        Dim row As GridViewRow = GridView1.Rows(index)
    
        ' Add code here to add the item to the shopping cart.
    
      End If
    End Sub
    
    protected void GridView1_RowCommand(object sender, 
      GridViewCommandEventArgs e)
    {
      if (e.CommandName == "AddToCart")
      {
        // Retrieve the row index stored in the 
        // CommandArgument property.
        int index = Convert.ToInt32(e.CommandArgument);
    
        // Retrieve the row that contains the button 
        // from the Rows collection.
        GridViewRow row = GridView1.Rows[index];
    
        // Add code here to add the item to the shopping cart.
      }
    
      }
    

    Para obter um exemplo que usa o ButtonField classe, consulte o GridView.RowCommand documentação do evento.

Consulte também

Tarefas

Como: Responder a eventos de botão em DataList ou Repeater itens

Referência

Visão Geral sobre o Controle do Servidor Web GridView