Inquiridor
ASP.NET Development Server x IIS 7: Como passar parâmetros para função javascript via attributes.add()?

Pergunta
-
Pessoal, boa tarde,
estou com um problema e gostaria da ajuda de vocês para resolvê-lo.
Tenho vários GridViews dinâmicos em um controle Repeater. Cada GridView possui checkboxes de permissão de leitura e de escrita para cada Tipo de Documento da minha aplicação ASP.NET 4.0. Ao clicar no checkbox do cabeçalho, todos os demais checkboxes abaixo são des/marcados.
Abaixo está um printscreen da minha tela:
Esse código do checkbox funciona normalmente no ASP.NET Development Server, mas não no IIS 6 e 7. Já tentei de tudo mas não deu jeito. Abaixo está a minha função jQuery que marca os checkboxes da coluna e o code-behind que adiciona o evento onclick nos checkboxes do cabeçalho:
<script src="/Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script type="text/javascript"> function toggleCheck(grid, nomeCheck, tipo) { var ischecked = $("#" + nomeCheck).attr("checked"); alert(grid + "\n\n" + nomeCheck + "\n\n" + ischecked + "\n\n" + tipo); if (tipo == "leitura") { $("#" + grid).find("input:checkbox[id*=CheckBoxLeitura]").attr("checked", function () { this.checked = ischecked; }); } if (tipo == "gravacao") { $("#" + grid).find("input:checkbox[id*=CheckBoxGravacao]").attr("checked", function () { this.checked = ischecked; }); } } </script>
Agora o Code-behind:
chkLeitura.Attributes.Add( "onclick", "toggleCheck('" + gridPermissoes.ClientID + "', '" + chkLeitura.ClientID + "', 'leitura')");
Quando vejo o código-fonte da página renderizada, as aspas simples são convertidas em ' por questão de segurança, mas funciona mesmo assim no Development Server! Quando publico no IIS 7 e clico no checkbox do cabeçalho, nada acontece, nem mesmo o alert() do javascript! :S
Se alguém tiver alguma dica de como resolver isso, por favor me ajude!
Valeu!
Joao Paulo de Lima Braga
- Movido Seilor Bonancio Junior segunda-feira, 19 de novembro de 2012 12:12 (De:ASP.NET)
Todas as Respostas
-
além do servidor llS, o serviço ftp também é intalado e permite que um site FTP seja adicionado á porta TCP 21, padrão para
esse protocolo. acompanhe o procedimento seguinte para adicionar e configurar o servidor FTP.
acesse o painel de controle > ferramentas administrativas.
clique duas vezes em gerenciador do serviços de informações da internet (llS)
clique com o botão direito do mouse na opção raiz do console SERVIDOR
servidor/padrão e selecione adicionar site FTP.
o assistente para adicionar site FTP é iniciado. em nome do site FTP digite
servidor FTP. em caminho físico digite c:\INETPUB\FTPROOT. click em avançar.
edd.drivers
-
Olá,
Vou postar aqui a a solução que encontrei, usando jQuery:
Minha função javascript ToggleCheck:
function toggleCheck(grid, nomeCheck, tipo) { var ischecked = $("#" + nomeCheck).attr("checked"); if (tipo == "leitura") { $("#" + grid).find("input:checkbox.leitura").attr("checked", function () { this.checked = ischecked; }); } if (tipo == "gravacao") { $("#" + grid).find("input:checkbox.gravacao").attr("checked", function () { this.checked = ischecked; }); } }
E no ItemTemplate eu defino uma classe CSS com o nome "leitura", para ser usada pelo jQuery:
<ItemTemplate> <asp:CheckBox ID="CheckBox2" CssClass="leitura" class="leitura" Checked='<%# Eval("SomenteLeitura") %>' runat="server" /> </ItemTemplate>
E no code-behind, Eu adiciono o evento onclick para o checkbox no cabeçalho:
chkLeitura.Attributes.Add("onclick", "toggleCheck('" + gridPermissoes.ClientID + "', '" + chkLeitura.ClientID + "', 'leitura')");
Aí deu tudo certo! :D