LAYERDEV

 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 LinkButton dentro do Gridview

por Mauricio Junior em 1/1/2011 0

 

            Olá pessoal, gostaria de explicar passo a passo como trabalhar com componente LinkButton dentro do GridView de forma dinâmica e simples. É preciso ficar atento em alguns detalhes especiais.

 

Requisito:

Ferramenta: Visual Studio.NET 2008

Linguagem: C#.NET

Conhecimento dos componentes .NET

 

Explicando a situação

            Tenho um aplicativo utilizando AJAX e tenho um grid sendo exibido na página. Dentro desse grid, tenho um link que devo clicar para abrir um outro componente .NET chamado TabContainer – segue um link de um artigo mostrando o TabContainer. [http://aspneti.com/trabalhando+com+o+componente+tabcontainer+722,0.aspx].

            Se eu colocar um link na página normalmente; isto é; <a href=””>, a tela dará refresh em tudo e na verdade quero apenas abrir um componente específico passando parâmetro do grid preenchido. Fora que, não quero mostrar na página o parâmetro que está sendo passado, dessa forma fica mais seguro. Melhor fazer tudo internamente. Espero que tenha entendido um pouco a explicação, tentei ser mais claro possível.

 

Código GridView

            Segue o código gridview montado. (Code 1.1)

 

   <asp:GridView ID="grdProntuario" runat="server" Width="170px"

                        AutoGenerateColumns="false" ShowHeader="false">

                        <Columns>

                            <asp:TemplateField>

                                <ItemTemplate>

                                    <asp:Image ID="imgProntuario" runat="server" ImageUrl="~/App_Themes/default/image/cadeado.png" />

                                </ItemTemplate>

                            </asp:TemplateField>

                            <asp:BoundField DataField="Bloqueado" ItemStyle-ForeColor="White"/>

                            <asp:BoundField DataField="DocumentoCapturadoId" ItemStyle-ForeColor="White"/>

                        </Columns>

                       

                    </asp:GridView>

Code 1.1

 

            O code 1.1 mostra apenas o código do gridview sem maiores detalhes. Uma observação é que coloquei uma imagem (<asp:image>) no itemTemplate do gridview. Dentro desse itemTemplate, vou colocar mais um componente chamado LinkButton. Code 1.2.

 

     <asp:GridView ID="grdProntuario" runat="server" Width="170px"

                        AutoGenerateColumns="false" ShowHeader="false"

                        onrowdatabound="grdProntuario_RowDataBound">

                        <Columns>

                            <asp:TemplateField>

                                <ItemTemplate>

                                    <asp:Image ID="imgProntuario" runat="server" ImageUrl="~/App_Themes/default/image/cadeado.png" />

                                    <asp:LinkButton ID="lnkProntuario" runat="server"

                                        Text='<%# DataBinder.Eval(Container.DataItem, "Campo1") %>'

                                        oncommand="lnkProntuario_Command"

                                        CommandArgument='<%# (String) DataBinder.Eval(Container.DataItem, "Campo1") + "$" + DataBinder.Eval(Container.DataItem, "Campo2") %>'>

                                    </asp:LinkButton>

                                </ItemTemplate>

                            </asp:TemplateField>

                            <asp:BoundField DataField="Bloqueado" ItemStyle-ForeColor="White"/>

                            <asp:BoundField DataField="DocumentoCapturadoId" ItemStyle-ForeColor="White"/>

                        </Columns>

                       

                    </asp:GridView>

Code 1.2

 

            Note que depois da imagem adicionei o código (<asp:LinkButton ID="lnkProntuario" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Campo1") %>' oncommand="lnkProntuario_Command"

CommandArgument='<%# (String) DataBinder.Eval(Container.DataItem, "Campo1") + "$" + DataBinder.Eval(Container.DataItem, "Campo2") %>'></asp:LinkButton>)

 e depois desse código continuei o gridview com seus campos específicos.

 

Explicação:

            O que aparece no Text do componente <LinkButton> é o “Campo1” vindo da pesquisa no banco de dados.  Para editar o grid, tive que clicar com o botão direito, acessar as propriedades do gridview e depois acessar o linkButton. (Imagem 1.1)

 

Referência: 1.1

 

            Como mostro na referência, cliquei com o botão direito em cima do gridview; escolhi a opção Edit Template e escolhi a coluna número [0]. Automaticamente o linkbutton apareceu para ser editado. (Referência 1.2)

 

Referência: 1.2

 

            No itemTemplate aberto, cliquei em cima selecionando o componente e acessar as suas propriedades. Foi exatamente isso que fiz. O evento ativado foi o onCommand. (Referência 1.3)

 

Referência: 1.3

 

            Quando eu ativo o onCommand, posso passar os parâmetros como argumento usando a propriedade CommandArgument. Os parâmetros de envio vieram também do banco de dados como campos normais do dataset. (Code 1.3)

 

 

CommandArgument='<%# (String) DataBinder.Eval(Container.DataItem, "Campo1") + "$" + DataBinder.Eval(Container.DataItem, "Campo2") %>'>

 

Code 1.3

 

            No meu caso eu preciso passar dois campos ao mesmo tempo para o meu código, e com o linkbutton, eu tive que passar como valor e depois separa com o Split. Veja que coloquei (String) antes dos dois valores para informar que os dados são do tipo string. O próximo passo é explicar e mostrar o código C#.NET. Code 1.4

 

 

protected void lnkProntuario_Command(object sender, CommandEventArgs e)

        {

            try

            {

                string[] cmdArgs = e.CommandArgument.ToString().Split(new char[] { '$' });

                Texto1.Text = cmdArgs[0].ToString();

               

                Texto2.Text = cmdArgs[1].ToString();

            }

            catch (Exception ex)

            {

                throw ex;

            }

        }

Code 1.4

 

            Vendo um pouco sobre o lnkProntuario_Command, declarei um array de string[] pegando o e.CommandArgument.ToString().Split(new char[]{‘$’}). O e.CommandArgument é o valor vindo do grid quando clico no linkButton, porém vem tudo junto, por exemplo: MeuNome$123456.

            Preciso agora separar a string concatenada pelo $ (cifrão). Com o split para separar as duas strings entre o $, fiquei com a posição zero e posição 1 para exibir no componente TabContainer falado anteriormente.

            Para esse final, basta separar a posição 0 para um tempo e a posição 1 para outro campo.

 

Comando para pegar no momento clicado. Code 1.5

 

 

e.CommandArgument.ToString().

 

Code 1.5

 

Comando para separar a string concatenada. Code 1.6

 

 

string[] cmdArgs = e.CommandArgument.ToString().Split(new char[] { '$' });

 

Code 1.6

 

Comando para pegar a primeira e segunda posição do array de string. Code 1.7

 

 

Texto1.Text = cmdArgs[0].ToString();            

Texto2.Text = cmdArgs[1].ToString();

 

Code 1.7

            Bom, eu fico por aqui, espero ter ajudado e esclarecido a você leitor, como desenvolver com linkButton dentro do gridview.

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 - Email com viagra
Enviado email anexado
Vídeo do Visual SourceSafe - Parte I
Pagamento via celular
Alongar é preciso
Search do Windows Live em Seu Site
Windows 7 funciona até no Mac
Novo TechNet Experience Online
Treinamento VSTS
Sistema ASP 3.0 utilizando 3 camadas – Parte 1
Chamando Programas de Dentro do Windows Forms
Web abrindo aplicações locais
Acessando banco de dados com pocket pc
Retirar Tag HTML dos campos utilizando expressão
Microsoft AdventureWorks Database
Sistema de Login com ASP 3.0 usando três camadas – Parte I
Dados via Post no VS 2005
Contagem Regressiva com C# e JavaScript
Vídeo - Serviços do Windows Live
Você tem boa postura no trabalho?
Gerando uma dll com sistema web
Moving to Visual Studio 2010 e-Book
Web Administration Tool
CES em Las Vegas
Configurar Style
Descobrindo e criando tecla de atalho com Windows Forms
User Control Windows executando no Internet Explorer (parte 2 de 2)
Exemplos de Queries Linq
Focus()
MaskedTextBox da direita para esquerda
Formatando String rapidamente
ASP.MENU com Compatibilidade
Como fechar todos os forms de um aplicativo para dispositivo móvel
XmlDataSource
C# - Da introdução ao primeiro projeto-1




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 *

Notebook 3D ou 4K?

Notebook vem com tudo...

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




NETITC