Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Desabilitando checkbox no evento RowDataBound do gridview e Selecionando todos checkbox através de JavaScript

Nesse artigo iremos implementar no gridview o uso de checkbox onde iremos selecionar todos os checkbox através de javascript e dependendo da condição, quando o gridview é populado no evento RowDataBound iremos desabilitar o checkbox.

GLB: 0
 
Nesse artigo iremos implementar no gridview o uso de checkbox onde iremos selecionar todos os checkbox através de javascript e dependendo da condição, quando o gridview é populado no evento RowDataBound iremos desabilitar o checkbox.
 
Vamos partir do princípio que já temos um projeto aberto onde temos uma conexão com o banco e um gridview. Adicionar no projeto um arquivo do tipo JScript.js com o nome selecionar.js onde o mesmo vai conter o conteúdo da Listagem 1:
Listagem 1:
 
//Função Check usado no GidView

function SelecionaTodosChecks(spanChk){

var oItem = spanChk.children;

var theBox= (spanChk.type=="checkbox") ?

spanChk : spanChk.children.item[0];

xState=theBox.checked;

elm=theBox.form.elements;

for(i=0;i

if(elm[i].type=="checkbox" && elm[i].id!=theBox.id){

if(elm[i].checked!=xState)

elm[i].click();

}

}

 
Agora na página .aspx dentro da tag <head>head> colocar o caminho do arquivo selecionar.js conforme Listagem 2:
 
 
Listagem 2:
<head id="Head1" runat="server">

<title>Nome do Projetotitle>

<script src="../selecionar.js" type="text/javascript">script>

head>
 
No GridView vamos acrescentar um TemplateField  que vai conter o checkbox conforme Listagem 3
 
 
Listagem 3:

<asp:TemplateField HeaderText="Selecione" Visible="true">

<ItemTemplate>

<div id="divSelect" runat="server">

<asp:CheckBox ID="chkSelect" runat="server" />

div>

ItemTemplate>

<HeaderTemplate>

<input id="chkAll" onclick="javascript:SelecionaTodosChecks(this);" runat="server"

type="checkbox" />

HeaderTemplate>

<HeaderStyle HorizontalAlign="Center" Width="10%" />

<ItemStyle HorizontalAlign="Center" />

asp:TemplateField>

 
Ao acrescentar o TemplateField o gridview vai aparecer conforme a Figura 1 mostra como deve ficar o GridView. Nesse momento se clicar-mos no checkbox do topo o mesmo acionará o javascript e irá selecionar o demais.
 
Figura 1
 
Agora que já sabemos como selecionar todos os checkbox de uma só vez, Saberemos como desabilitar o checkbox no evento RowDataBound do GridView então no modo design clique no gridview(1) e depois vá na Aba Properties e clique em Events (2) e por fim clicar e RowDataBound(3) conforme figura 2.
 

Figura 2.
 
Ao clicar 02 vezes em Events vamos para o .cs da página onde vai aparecer o evento RowDataBound
conforme Listagem 4 vamos ver como desabilitar todos os checkbox.
 
Listagem 4:

protected void NomedoGridView_RowDataBound(object sender, GridViewRowEventArgs e)

{

      if (e.Row.RowType == DataControlRowType.DataRow)

      {

         CheckBox chkSelect = (CheckBox)e.Row.FindControl("chkSelect");
         chkSelect.Attributes["disabled"] = "true";      
 
      }
}
 
 
OBS: Agora podemos colocar um outro TemplateField e fazer condições onde dependendo do conteúdo desse novo TemplateField  você habilita ou desabilita o checkbox .
 
Exemplo:
 
Colocar no GridView outro TemplateField que retornará o cargo conforme Listagem 5
 
 
Listagem 5:

<asp:TemplateField HeaderText="Cargo">

<ItemTemplate>

<asp:Label ID="lblCargo" runat="server" Text=''>asp:Label>

ItemTemplate>

<HeaderStyle Width="80%" />

asp:TemplateField>

 
 
E no evento RowDataBound colocar o código conforme a Listagem 6
 
Listagem 6:

protected void NomedoGridView_RowDataBound(object sender, GridViewRowEventArgs e)

{

      if (e.Row.RowType == DataControlRowType.DataRow)

      {

         Label lblCargo= (Label)e.Row.FindControl("lblCargo");
         CheckBox chkSelect = (CheckBox)e.Row.FindControl("chkSelect");
 
        if (lblCargo.Text == "Desenvolvedor")
            chkSelect.Attributes["disabled"] = "true";
       
else
            chkSelect.Attributes["disabled"] = "false";
 
      }
}
 
 
Espero que tenham gostado e até o próximo artigo.





    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



[Este post ainda não foi associado a uma sequência]
Autor
Erysson Batista Barros De Souza

Tenho experiência em ASP.NET utilizando a linguagem C#. Sou formado em Sistemas de Informação pelo o Instituto de Estudos Superiores da Amazônia – IESAM e Especialista em Tecnologia de Desenvolvimento de Softwares pelo Centro Universitário do Pará – CESUPA. Trabalho no Tribunal de Contas do Estado...


Space do autor
Estatísticas #
Favorito:
Comentários:
Feedback:
Utilidade:
2   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível somente para quem possui Créditos DevMedia. (Ele não está associado a nenhuma publicação DevMedia).


  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03