quinta-feira, 22 de outubro de 2009

Command GridView

Nessa postagem comentarei um dos tópicos mais perguntados, como gerar um comando a partir de um botão que está no GridView e pegar um dado desejado.
Após criar um novo projeto Web Application, adicione um GridView à sua página:




Feito isos clique em Edit Columns, escolha button field e clique em Add, do lado direito procure por CommandName e coloque Click, como na imagem:





Agora crie uma classe como abaixo:

public class Campos
{
      public int Id{get;set;}
      public string Nome{get;set;}
      public string Sobrenome{get;set;}
}

No page_load da página escreva esse código:

protected void Page_Load(object sender, EventArgs e)
{
        List campos = new List();
        campos.Add(new Campos(){Id = 1, Nome = "Murilo", Sobrenome = "Gomes"});
        campos.Add(new Campos(){Id = 2, Nome = "Gabriel", Sbrenome = "Gomes"});

        GridView1.DataSource = campos;
        GridView1.DataBind();

        GridView1.RowCommand += new GridViewCommandEventHandler(GridView1_RowCommand);
}

Quando você rodar o programa o resultado será esse:





Agora vamos ao código para poder pegar o valor do ID, logo abaixo em que termina Page_Load escreva essa função:

void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
         if(e.CommandName == "Click")
        {
                 int indice = Convert.ToInt32(e.CommandArgument);
                 int id = Convert.ToInt32(GridView1.Rows[indice].Cells[1].Text);
        }
}

Pronto agora no id você sempre terá o valor do Id da linha em que o botão foi clicado.

Alguns conceitos, o CommandArgument te retorna o indice da linha que gerou o evento.
O e.CommandName retorna o nome do evento, nesse caso estamos querendo o command Click que nós demos o nome acima.