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>
Figura 2.
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
else
chkSelect.Attributes["disabled"] = "false";
}
}
Espero que tenham gostado e até o próximo artigo.

[Este post ainda não foi associado a uma sequência]
Você está em:
canal .net
Erysson Batista Barros De Souza
Space do autor
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

Estudo comparativo entre banco de dados IBM Informix e Microsoft SQL

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