Busca Online:
 

Seja bem vindo(a) Visitante, voc no est logado deseja logar
na comunidade ASPNETi.COM e participar de servios e promoes ? clique aqui.

Trabalhando com GridView, RowCommand e DataKeysNames



Data Publicação: 24/3/2010 17:54:34
Total de visualizações: 1666

comente
Diminuir o tamanho das letras Aumentar o tamanho das letras


        Olá pessoal, dia23 de março de 2010 eu criei um artigo [http://aspneti.com/trabalhando+com+GridView+e+RowCommand+812,0.aspx]que falava diretamente do uso dos componentes GridView e RowCommand. Lógico quecom o título só abordei esses dois assuntos para ficar mais fácil de entender.Só que não abordei uma propriedade do componente GridView, o chamadoDataKeysNames.

         Dessa forma, resolvi criar um artigofalando do componente GridView, ação RowCommand e propriedade DataKeysNames.

 

Referência:

Ferramenta:Visual Studio .NET 2008

Linguagem C#.NET

Plataforma: Web

Nível: Iniciante

 

         Antigamente, não existia essecomponente chamado GridView, era DataGrid. Na atualização do framework eferramenta de desenvolvimento Visual Studio.NET, eles criaram esse novocomponente chamado GridView com algumas importantes alterações e melhorias.

        

Comoresultado fina do artigo anterior, [http://aspneti.com/trabalhando+com+GridView+e+RowCommand+812,0.aspx]se o usuário trocar a coluna da chave, no meu caso CH_AUTENTICACAO, o softwaredeixa de funcionar, pois ao tentar pegar a chave virá outro dado.

        

Esteproblema existia também com o DataGrid e na versão mais nova colocaram umasolução de chave mais simples e específica. O mais importante é que se aposição das tabelas foi alterada, não terá problema algum em pegar a chave comCommand.

        

         Com a estrutura do mesmo artigoanterior [aspneti.com/trabalhando+com+GridView+e+RowCommand+812,0.aspx] mostropasso a passo como colocar a chave e pegar essa mesma chave de acordo com alinha selecionada.

 

 

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

                    AutoGenerateColumns="false" onrowcommand="gridUsuario_RowCommand" DataKeyNames="CH_AUTENTICACAO">

                <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.

        

Depoisdisto, note que no início do <asp:GridView> existe uma propriedadechamada onRowCommand com o valor “gridUsuario_RowCommand”. Porque ele colocouesse valor? Porque o Id do GridView chama “gridUsuario” com isso, o softwareatribui automaticamente o nome “underline” o comando que, no nosso caso éRowCommand.

        

Paraatribuir este OnRowCommand é necessário mudar a aba na apresentação para Designou Split. Automaticamente aparecerá o grid. (Imagem 1)

        

Vejaque agora tem mais uma propriedade chamada DataKeyNamesantes das colunas definidas, ou seja, da palavra Columns. Como valor dessa propriedade DataKeyNames coloquei a chave da minha tabela do banco de dadoschamada CH_AUTENTICACAO.

 

<!--[if gte vml 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 tipode botão com a propriedade ButtonType e o valor Image. Depois informei o nomedo comando 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 chave = gridUsuario.DataKeys[index]["CH_AUTENTICACAO"].ToString();

 

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

                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á dentro dapropriedade DataKeysNames, ou seja, a chave da tabela de dados.

         Com o index selecionado, basta colocaro campo chave da minha tabela. (Code 5)

 

 

string chave = gridUsuario.DataKeys[index]["CH_AUTENTICACAO"].ToString();

 

Code 5

 

         Depois de pegar ovalor correto, chamei o método de negócio passando os parâmetros e redirecioneipara a mesma página. (Code 6)

 

 

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

            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.

 

Mauricio Junior

www.mauriciojunior.org

blog.mauriciojunior.org



Total de visualizações: 1666
voltar   comente  subir


Comentários:


Comente (dê sua opinião): VOCÊ PRECISA LOGAR

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Visual SourceSafe - Série 5
Criando TreeView com Visual Studio.NET 2005 (passo 1)
Web abrindo aplicações locais
Microsoft lança seu próprio QRCode
MinimizeBox no Celular
Armazenando dados no ViewState – Parte I
XmlDataSource
Perguntas Mais Freqüentes de ASP.NET
XAML Power Toys
ASP.NET MVC
Misturando dados
Comando para compilação .NET
Exemplo usando try e catch
UPLOAD – Enviando imagem pela Internet
Novo iGas 2.0 Mobile
Zune e Kin Zune
Criando Pastas no Mail com o Macbook
Confira os 5 primeiros ganhadores da promoção assinatura online grátis DEVMEDIA.COM e ASPNETI.COM
Problemas no sistema de busca
Win the 7
Importação e Comunicação entre Sistemas
GridView Parte III
VSTS 2008
Configurar Style
Não publicação
Visual SourceSafe – Série 6
Desenvolvimento de Aplicativos para TV Digital - Parte 2
SmartNavigation – 1.0 e 1.1 MaintainScroll PositionOn Postback – 2.0
Promoção semanal de e-Books .NET
E-mail Carta de Amor - Vírus
Detectando erro a todo custo
Detectando ENTER
Windows Mobile Phone
Conhecendo o controle Wizard ASP.NET 2.0
Sistema de Login em ASP – Parte IX (Utilizando três camadas)
Sobre o Autor
  [sumir] [aparecer]
 
Mauricio Junior Maurício Júnior
Formado pela Faculdade Anhanguera, Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando Mestrado na UNB Engenharia Elétrica; .
Tenho 27 anos e possuo sete livros publicados pela editora Ciência Moderna no ano de 2009. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog:  blog.mauriciojunior.orgSite pessoal  www.mauriciojunior.org

Informaes Online
Usurios Online: 993
Artigos:  750
Vdeos:  61
PodCast's:  45
Frum:  3128
Empregos:  1385
Usurios Cadastrados: 6166
Publicidade
LAYERDEV




Vdeos Publicados
 

Duas dicas de internet - Google RealTime e OpenDNS

Desconfie sempre da internet e emails

Microsoft Office online no Safari funcionando

Inovação Visual Studio .NET 2010 - parte 4

Office Live online

TAB TAB na ferramenta Visual Studio .NET

Apresentação do IMC - Sistema de Controle de Peso Mobile

Inovação Visual Studio .NET 2010 - parte 3

Inovação Visual Studio .NET 2010 - parte 1

Download de vídeos com o Safari

Criando Chart - Novo componente integrado com o Visual Studio.NET 2010

Serviços: SAC e SMS integrado

Café com TI - Info sobre o Visual Studio.NET 2010 - WebConfig

Café com TI - Info sobre o Visual Studio.NET 2010

Café com TI - Vírus se passando por Correios

Café com TI - Novo jeito de mandar e-mail com vírus

Café com TI - Formatando todo tipo de String

Resolvido erro do Banco do Brasil no browser

Erro no site do Banco do Brasil com o Safari

Duas dicas do Snow Leopard

Incompatibilidade no Snow Leopard

E-mail com vírus, veja os detalhes

Café com TI - Continuando a configuração de Themes no site

Café com Ti - Banner Rotativo

Café com TI - Evento Eco Brasília

Café com TI - Themes dentro do ASPNETi.COM

Café com TI - Trabalhando com o iCal no Macbook

Café com TI - Deixando o rodapé do seu site fixo

Café com TI - Windows 7 sendo utilizado sem qualquer incompatibilidade

Café com Ti - ASP.NET - Explicando o componente ModalDialogExtender do Ajax Toolkit

Café com TI - Indexação de URL com ASP.NET

Café com TI - Configurando Mail para sua conta no HotMail
Enquete ASPNETi.COM
 Os podcasts tem sido proveitoso pra você?

Favor logar para votar
 
Publicidade Vertical
NETITC