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.