DICAS .NET

 Busca Online:

 
Seja bem vindo(a) Visitante, você não está logado deseja logar
no portal para participar de serviços e promoções ? clique aqui.


No caso de perder a senha, acesse aqui e receba por e-mail.
Deseja entrar em contato conosco, acesse aqui e mande-nos um e-mail.

Trabalhando com GridView e DataKeyNames com Várias Chaves

por Mauricio Junior em 1/1/2011 0

        Olá Internautas, hoje gostaria de falar um pouco sobre o preenchimento de um GridView utilizando DataKeyNames com várias chaves.

Requisitos:
Visual Studio .NET 2008
Framework 3.5
Linguagem C#

    O que quer dizer esse: com várias chaves? Quero dizer e falar da possibilidade da tabela de banco de dados ter mais de uma chave necessária para fazer update e delete. Existe apenas uma diferença entre os artigos publicados anteriormente com este. Segue abaixo os artigos anteriores.

- Trabalhando com GridView e RowCommand (http://aspneti.com/trabalhando+com+GridView+e+RowCommand+812,0.aspx)

- Trabalhando com GridView, RowCommand e DataKeysNames (http://aspneti.com/Trabalhando+com+GridView+RowCommand+e+DataKeysNames+813,0.aspx)

    Nestes artigos publicados acima, utilizei apenas um DataKeyNames dentro do GridView. Neste artigo, vou colocar mais de uma chave para poder pegar depois e atualizar a tabela de banco de dados.  É um cadastro simples (figura 1.1)



    O código é simples: Referência 1.2



<asp:GridView ID="gridProdutoAgencia" runat="server"
                                AutoGenerateColumns="false" DataKeyNames="prdCodigo, banCod, ageCod"
                                onrowcommand="gridProdutoAgencia_RowCommand">
                            <Columns>
                                <asp:BoundField DataField="prdCodigo" HeaderText="Cód." />
                                <asp:BoundField DataField="banCod" HeaderText="Cod. Banco" />
                                <asp:BoundField DataField="ageCod" HeaderText="Cód. Agência" />
                                <asp:BoundField DataField="pabTempoExpurgo" HeaderText="Tempo" />
                                <asp:BoundField DataField="pabSituacao" HeaderText="Situação" />
                                <asp:BoundField DataField="pabIndValidaCod2d" HeaderText="Valida Código 2D" />
                                <asp:BoundField DataField="pabIndValidaImagem" HeaderText="Valida Imagem" />
                                <asp:ButtonField ButtonType="Link" CommandName="Ativar" HeaderText="Ativar" Text="Ativar" />
                                <asp:ButtonField ButtonType="Link" CommandName="Inativar" HeaderText="Inativar" Text="Inativar" />
                                <asp:ButtonField ButtonType="Link" CommandName="Delete" HeaderText="Delete" Text="Delete" />
                            </Columns>
                        </asp:GridView>

Referência: 1.2

    Na linha 3 do código de referência 1.2 mostra que coloquei a chave separada por vírgula, ou melhor, mais de uma chave do banco.

 
 DataKeyNames="prdCodigo, banCod, ageCod"


Referência: 1.3
    Para pegar estas chaves, funciona de forma simples e direta. A Microsoft facilitou muito a nossa vida com essa funcionalidade. Dentro do RowCommand é simples pegar os valores colocados. Em outros eventos estes valores podem ser pegos facilmente, mas com este artigo, mostro com o RowCommand. Veja como pegar. (Referência 1.4)


protected void gridProdutoAgencia_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                if (e.CommandName == "Delete")
                {
                    int index = int.Parse((string)e.CommandArgument);
                    ProdutoAgenciaBancoClienteDTO dto = new ProdutoAgenciaBancoClienteDTO();
                    dto.BanCod = gridProdutoAgencia.DataKeys[index]["banCod"].ToString();
                    dto.AgeCod = gridProdutoAgencia.DataKeys[index]["ageCod"].ToString();
                    dto.PrdCodigo = gridProdutoAgencia.DataKeys[index]["prdCodigo"].ToString();

                    if (_produtoAgenciaBancoClienteBRL.deleteProdutoAgenciaBancoCliente(dto))
                    {
                        Response.Redirect("CadastroProdutoAgenciaCliente.aspx");
                    }
                }
            }
            catch (Exception ex)
            {
                lblErro.Text = ex.Message.ToString();
            }
        }

Referência: 1.4

    O código que está em anexo atribui as chaves para dentro de uma dto instanciada. (Referência 1.5)



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

gridProdutoAgencia.DataKeys[index]["banCod"].ToString();
gridProdutoAgencia.DataKeys[index]["ageCod"].ToString();
gridProdutoAgencia.DataKeys[index]["prdCodigo"].ToString();

Referência: 1.5

    O primeiro passo é pegar o index com o e.CommandArgument e depois usar a variável com o DataKeys. Com isso você pode atribuir para qualquer outra variável para atualização, deleção ou outra coisa.

Bom, eu fico por aqui e espero que você tenha entendido a singela explicação.
Qualquer dúvida, pode entrar em contato pelo site.

Mauricio Junior – www.mauriciojunior.org / blog.mauriciojunior.org
voltar   comente  subir

Download Copy





 
Mauricio Junior 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 29 anos e possuo sete livros publicados pela editora Ciência Moderna. Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, ECODE10.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.org, Site pessoal www.mauriciojunior.org



Comentários:


Comente (dê sua opinião):

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

Vírus - Link com Vírus
Entrevista com Bruno PorKaria
Enviado email anexado
Vídeos para download
Aplicativos para Dispositivos Móveis, Usando C#.NET com a ferramenta Visual Studio.NET e com Banco de Dados MySQL e SQL Server
Ebook Grátis Microsoft
Themas - Muito Simples
Criptografando Senha
CES 2008: Keynote do Bill Gates
Criando a Tag Cloud em C#
Trabalhando com Cookie (parte II)
Framework SkyMenu
Vídeo - Ler EventLog do Windows usando C#.NET
Método SHA512
Alongar é preciso
DateDiff com intervalos escolhidos por você
Aprenda com Windows Azure
Trabalhando com GridView e BoundField escondido
Internet começa a ter ultra velocidade no Brasil
Trabalhando com Ipersonate e Web
Generics usando Object DataSource
O vírus do curriculum
Customizar Setup Layout
Criando Números Aleatoriamente
Trabalhando com o componente Accordion
Sistema ASP 3.0 utilizando 3 camadas – Parte 2
Criando Splash - Com Efeito
Gerando uma dll com sistema web
Review do Windows Phone, Games e Aplicativos
Novo TechNet Experience Online
Virus: Provocando sua curiosidade
Dados via Post no VS 2005
Microsoft Preview Windows Phone 7 in NYC
Apresentação do Windows
Chama método que está dentro do COM PLUS (COM +)




eCode10 Magazine 4 Edição

Baixe a sua sem pagar nada, basta apenas ter um cadastro na comunidade aspneti.com ou ser usuário do ecode10.com.



Edições anteriores
LAYERDEV

Notícias *

Visão do Futuro - Day of Glass 2

Futuro próximo pode chegar cedo?...

Lenovo de 14 polegadas IdeaPad

Veja o novo notebook Lenovo IdeaPad...

Windows 8 Store

Channel9 publica um vídeo da Windows Store...

Sony Vaio série Z

Novo Vaio Ultrabook? ou não Ultrabook?...

Samsung quer comprar RIM

Imagine se juntar as duas companhias...

Surface 2.0 mostrado

Novo Surface é mostrado de forma incrível...

Skype Tablet

Será que esse skype tablet pega mesmo?...

Lenovo e o seu novo Ultrabook

Ultrabook chega também pela Lenovo...

Promoções de livros móveis .NET

Baixa agora o seu e aprenda a programar....




NETITC