🔥 Apps, books, system as a service, podcast and more



Trabalhando com GridView e RowCommand

        Olá pessoal, hojequero mostrar uma coisa bem simples e precisa. Por ser tão simples, existempessoas que não prestam atenção e a funcionalidade acaba não funcionando. Otrabalho com GridView é bem legal, isto é, ajuda muito o desenvolvedor efunciona bem. Antigamente, para o povo de ASP 3.0; toda tabela era programadamanualmente e agora o pessoal usa um componente funcional com pequenas linhasde código.

 

Referência:

Ferramenta:Visual Studio .NET 2008

Linguagem C#.NET

Plataforma: Web

Nível: Iniciante

 

         O objetivo desse artigo é mostrar comoutilizar o RowCommand com GridView. Mostro como apenas deletar um dado do bancode dados clicando no botão dentro do grid.

 

 

<asp:GridView ID="gridUsuario" runat="server" Width="100%"

                    AutoGenerateColumns="false" onrowcommand="gridUsuario_RowCommand">

                <Columns>

                    <asp:BoundField DataField="NO_USUARIO" HeaderText="Usuário" />

                    <asp:BoundField DataField="NO_SISTEMA" HeaderText="Sistema" />

                    <asp:BoundField DataField="CH_AUTENTICACAO" HeaderText="Id" />

                    <asp:ButtonField ButtonType="Image" CommandName="Delete"

                    ImageUrl="~/App_Themes/Padrao/image/fechar.jpg"

                    ControlStyle-Width="15" HeaderText="Excluir"/> 

                </Columns>

               </asp:GridView>

 

Code 1.1

 

         A primeira coisa é gerar o grid com oscampos que preciso para aparecer na tabela. A tag <asp:BoudField> é umcampo normal. Dentro este campo, existe a propriedade chamada DataField cujocoloquei o nome que veio do meu banco de dados, ou seja, da tabela do meu bancode dados. Note que para cada campo eu fiz a mesma coisa, só o último que não. Éum pouco diferente.

         Depois disto, note que no início do<asp:GridView> existe uma propriedade chamada onRowCommand com o valor“gridUsuario_RowCommand”. Porque ele colocou esse valor? Porque o Id doGridView chama “gridUsuario” com isso, o software atribui automaticamente o nome“underline” o comando que, no nosso caso é RowCommand.

         Para atribuir este OnRowCommand énecessário mudar a aba na apresentação para Design ou Split. Automaticamenteaparecerá o grid. (Imagem 1)

 

Imagem 1

 

         Depois de selecionado acessei aspropriedades e cliquei em Events. (Imagem 2)

Imagem 2

 

         Selecionei a Ação RowCommand clicandoduas vezes. Automaticamente foi criado o nome gridUsuarioRowCommand. Dessa forma, no grid foi acrescentado aquelalinha de comando. [onrowcommand="gridUsuario_RowCommand]

         Além disso, um método foi criado. (Code2)

 

 

protected void gridUsuario_RowCommand(object sender, GridViewCommandEventArgs e)

{}

Code 2

         Voltando para a página de apresentação,criei um novo campo para armazenar uma imagem com função de botão. (Code 3)

 

 

<asp:ButtonField ButtonType="Image" CommandName="Delete"

                    ImageUrl="~/App_Themes/Padrao/image/fechar.jpg"

                    ControlStyle-Width="15" HeaderText="Excluir"/>

 

Code 3

 

         Coloquei o tipo debotão com a propriedade ButtonType e o valor Image. Depois informei o nome docomando que será executado, CommandName=”Delete”. Escolhi para aparecer umaimagem em vez de aparecer um texto, caso queira deixar deixar um texto, não temproblema algum. Para finalizar coloquei o nome do título da coluna chamada“Excluir”. Aquele título que fica lá em cima.

         É lógico que não parou por ai, agorapreciso colocar o código principal para que depois de acionado o clique executeo comando Delete. (Code 4)

 

 

protected void gridUsuario_RowCommand(object sender, GridViewCommandEventArgs e)

        {

            if (e.CommandName == "Delete")

            {

                int index = int.Parse((string)e.CommandArgument);

                string chaveDelete = gridUsuario.Rows[index].Cells[2].Text;

 

                _usuario.deleteUsuario(Convert.ToInt32(chaveDelete));

                Response.Redirect("manterusuario.aspx");

            }

        }

 

Code 4

 

         A primeira coisa foi perguntar se essecomando é igual a “Delete”, se for igual, com o mesmo argumento, pego o indexreferente a linha selecionada. A linha selecionada precisa ser identificadapara saber qual a linha preciso deletar. A minha chave principal está na coluna2, ou seja, a chave da tabela de dados.

         Com o index selecionado, basta pegar ovalor do texto na coluna 2. (Code 5)

 

 

string chaveDelete = gridUsuario.Rows[index].Cells[2].Text;

 

Code 5

 

         Depois de pegar ovalor correto que preciso, só chamei o método de negócio passando os parâmetrose redirecionei para a mesma página. (Code 6)

 

 

            _usuario.deleteUsuario(Convert.ToInt32(chaveDelete));

            Response.Redirect("manterusuario.aspx");

 

Code 6

 

         Além disso, você pode colocar mensagensde confirmação e tudo mais. Fica ai uma dica para incrementar. O resultadofinal é esse. (Imagem 3)

 

Imagem 3

 

         Como as informações são confidenciais,escolhi riscá-las.

         Não falei como conectar no banco dedados nem nada, só quis mostrar como deixar funcionando o uso do componentegridView com o comando RowCommand. As questões com o banco de dados de select edelete é com você.

Espero que tenha gostadoqualquer coisa só entrar em contato pelo site.

Sign up to our newsletter

Receive our latest updates about programming languages, software, database, books, ebooks, classes, jobs and more.

Top