none
Erro de Sintaxe RRS feed

  • Pergunta

  • Ola novamentem amigos

    Bem, eu acho que preciso voltar para a escola, pois ultimamente nao tenho acertado uma.Vamos a duvida desse momento.

    Meu objetivo continua sendo clicar em um LinkButton e pegar o ID da tabela, a fim de utiliza-lo posteriormente mas parece que a sintaxe abaixo esta incorreta.

    Poderiam me ajudar?

     

    <asp:LinkButton ID="LinkButton3" runat="server" CommandName= "PegaID" CommandArgument='<%#Eval("REL_ID")%>' OnClientClick="openModal('Documentos.aspx?rel_id='+<%#Eval("REL_ID")%>, 800, 600);"><%#Eval("REL_DOCUMENTO")%></asp:LinkButton>


    Ao que tudo indica parece haver algum problema entre ("") ou (''), pois parte da sintaxe acima, esta aparecendo como link do LinkButton.

    Aparece isso, no lugar da informacao que deveria aparecer no lugar do link:
    A ultima informacao realmente corresponde a informacao que deveria aparecer=5555

    OnClientClick="openModal('Documentos.aspx?rel_id='+12, 800, 600);">5555



    Obrigado Mais uma vez.

    segunda-feira, 6 de abril de 2009 20:12

Respostas

  • Ola Amigos

    Consegui resolver esse meu problema.Eis a sintaxe correta abaixo:

    <asp:LinkButton ID="LinkButton1" 
                             runat="server" 
                             OnClientClick='<%# Eval("REL_ID", "openModal(""Documentos.aspx?REL_ID={0}"", 800, 600);return false;") %>'>
                             <%# Eval("REL_DOCUMENTO") %>
    </asp:LinkButton>
    Aqui o javascript:

    function openModal(pUrl, pWidth, pHeight) {
    	if (window.showModalDialog) {
    		return window.showModalDialog(pUrl, window,
    		  "dialogWidth:" + pWidth + "px;dialogHeight:" + pHeight + "px");
    	} else {
    		try {
    			netscape.security.PrivilegeManager.enablePrivilege(
    			  "UniversalBrowserWrite");
    			window.open(pUrl, "wndModal", "width=" + pWidth
    			  + ",height=" + pHeight + ",resizable=no,modal=yes");
    			return true;
    		}
    		catch (e) {
    			alert("Script não confiável, não é possível abrir janela modal.");
    			return false;
    		}
    	}
    Consegui abrir a janela modal, passando o parametro da linha do gridview, usando o linkButton.Na pagina que se abre eu pego esse ID e faco as devidas leituras na base de dados, para pegar as demais informacoes que serao exibidas.

    Isso esta otimo, mas como nem tudo e perfeito, agora eu preciso descobrir a sintaxe correta, para fechar a janela modal que se abrir, pois quando eu clico no botao fechar, ao invez da janela ser fechada, esta sendo aberta uma outra janela dentro dela.Essa janela modal, possui tambem outros botoes, sendo que cada um leva para uma pagina diferente e quando clico em um deles, uma nova janela Nao Modal e aberta, sendo que eu gostaria que ela fosse aberta dentro da janela modal.

    Bem, vamos por partes, como diria o esquartejador.

    Obrigado e um Abraco
    quarta-feira, 15 de abril de 2009 14:33

Todas as Respostas

  • Ola

    Tente separa a sintaxe como se fosse um asp tradicional. Já "apanhei com  isso , pois o asp.net não executa o eval para eventos do client (OnclientClick por exemplo) 

    veja um exemplo de um projeto meu :

    OnClientClick='<%# "WaitAcaoPrj(" & Eval("Codigo") & ");" %>'
    Fernando Cerqueira MVP.ASP.NET TEAM AJAX.TOOLKIT CONSULTOR & ARQUITETO
    segunda-feira, 6 de abril de 2009 22:11
    Moderador
  • Ola Amigos

    Estou a alguns dias tentando resolver mais esse problema mas ate agora sem sucesso.Estou usando um LinkButton dentro de um TemplateField de um GridView.

    Quando eu clico nesse linkButton, eu quero pegar o ID da linha do GridView e passa-lo para uma nova pagina (Uma janela modal) e nessa nova pagina, eu irei recupera-lo atraves do request.querystring.

    Estou usando a sintaxe abaixo que esta funcionando:

    <ItemTemplate> 
    <asp:LinkButton ID="LinkButton1" runat="server" OnClientClick="openModal('Documentos.aspx?REL_ID=13', 800, 600);"> <%# Eval("REL_DOCUMENTO") %> </asp:LinkButton>
    </ItemTemplate>
    
    
    
    

    Na rotina acima "REL_ID" E O MEU CAMPO ID e 'REL_DOCUMENTO" e o campo que sera exibido no LinkButton.
    REL_ID=13 e apensa um teste que eu fiz, colocando diretamente o numero do meu ID.Nesse caso funciona perfeitamente.

    Mas e claro que cada linha do Grid tem o seu ID, portanto e uma informacao varialvel.
    Esse e o meu unico problema, como colocar o ID da linha nessa sequencia.
    Apesar de bastante ajuda aqui do Forum, ainda nao consegui resolver esse problema.

    Ja sugeriram que eu usasse o CommandArgument e o CommandName, com RowCommand e RowDataBound, porem tambem nao funcionou.Quando usei esses comandos a nova pagina era aberta sem dados, pois o evento OnClientClick e executado primeiro e como eu nao pegava o ID, a nova pagina era aberta sem a leitura dos dados.


    Funcao JavaScript = OpenModal

    function openModal(pUrl, pWidth, pHeight) {
    	if (window.showModalDialog) {
    		return window.showModalDialog(pUrl, window,
    		  "dialogWidth:" + pWidth + "px;dialogHeight:" + pHeight + "px");
    	} else {
    		try {
    			netscape.security.PrivilegeManager.enablePrivilege(
    			  "UniversalBrowserWrite");
    			window.open(pUrl, "wndModal", "width=" + pWidth
    			  + ",height=" + pHeight + ",resizable=no,modal=yes");
    			return true;
    		}
    		catch (e) {
    			alert("Script não confiável, não é possível abrir janela modal.");
    			return false;
    		}
    	}
    	


    Me parece portanto que a forma mais pratica e justamente essa mas passando o ID correto.

    <asp:LinkButton ID="LinkButton1" runat="server" OnClientClick="openModal('Documentos.aspx?REL_ID=13', 800, 600);"> <%# Eval("REL_DOCUMENTO") %> </asp:LinkButton>


    Desculpem pela carta.

    Muito Obrigado e um Abraco

    quarta-feira, 8 de abril de 2009 17:55
  • Olá,

    Não cheguei a testar, mas acho que encontrei o problema... Veja se funciona:

    <asp:LinkButton ID="LinkButton3" runat="server" CommandName= "PegaID" CommandArgument='<%#Eval("REL_ID")%>' OnClientClick="openModal('Documentos.aspx?rel_id=<%#Eval("REL_ID")%>', 800, 600);"><%#Eval("REL_DOCUMENTO")%></asp:LinkButton>

    Abraços

    Thiago J. Mônaco
    quarta-feira, 8 de abril de 2009 18:05
    Moderador
  • Obrigado por sua ajuda Thiago

    Sempre que recebo uma sugestao nova, fico muito contente e ansioso para ver se vai funcionar.

    Porem infelizmente nao funcionou mas que pena.Eu ja havia chegado a esse resultado em uma das varias tentativas que fiz.

    O que acontece com esse exemplo que voce me passou e que no linkbutton,onde verevia aparecer o conteudo do campo"REL_Documento" esta aparecendo exatamente o que esta abaixo.

    OnClientClick="openModal('Documentos.aspx?rel_id=12', 800, 600);">5555

    Parte do codigo HTML esta sendo exibido no linkButton, sendo que o correto seria apenas o ultimo numero que aparece "5555".


    E agora? Alguma sugestao?

    Obrigado e um Abraco

    quarta-feira, 8 de abril de 2009 18:29
  • Ola Amigos

    Estou quase desistindo de fazer assim, se bem que eu ainda nao conheco outra alternativa (ha ha ha).

    Mas sera que alguem tem mais alguma sugestao para me dar.

    Obrigado e um Abraco
    segunda-feira, 13 de abril de 2009 17:54
  • Ola Ventana....

    e algo muito parecido com isso, basta analisar e ajustar se nescessário, fiz de cabeça aqui... Não adianta apenas "copiar" precisa enteder o que estamos (todos) sugerindo, seu cenário é trivial, basta ajustar e/ou corrigir algum erro  de digitação.

    <
    asp:LinkButton ID="LinkButton3" runat="server" CommandName= "PegaID" CommandArgument='<%#Eval("REL_ID")%>' OnClientClick="openModal('Documentos.aspx?rel_id=" + <%# Eval("REL_ID")%>  + "', 800, 600);" Text='<%#Eval("REL_DOCUMENTO")%>'></asp:LinkButton
    >

    Fernando Cerqueira MVP.ASP.NET TEAM AJAX.TOOLKIT CONSULTOR & ARQUITETO
    segunda-feira, 13 de abril de 2009 18:13
    Moderador
  • Obrigado novamente por sua ajuda Fernando.

    Parece que esse problema esta bem mais dificil do que eu poderia imaginar.Infelizmente ha algum problema nessa sintaxe que voce me passou, aparentemente e um problema entre Aspas e Apostrofos.Eu dei uma mexida e quase consegui fazer funcionar, eu disse quase mas ainda falta algo.

    Eu realmente queria uma janela modal mas como ja gastei bastante tempo com esse assunto, resolvi deixar isso de lado por enquanto e parti para uma janela nao modal que funcionou rapidamente.O ruim e que o usuario podera abrir varias janelas mas vai se fazer o que.

    No futuro eu tentarei usar o Ajax que no momento nao esta funcionando na minha aplicacaoesumo que seja algum problema no web.config, pois se eu criar um projeto novo, consigo usar o Ajax sem problemas, exceto o Controle TabContainer que nao esta funcionando de jeito nenhum.

    Bem, vou seguir com o desenvolvimento do meu sistema.

    Muito obrigado, um abraco e ate a proxima duvida.

    segunda-feira, 13 de abril de 2009 20:50
  • Ola Amigos

    Consegui resolver esse meu problema.Eis a sintaxe correta abaixo:

    <asp:LinkButton ID="LinkButton1" 
                             runat="server" 
                             OnClientClick='<%# Eval("REL_ID", "openModal(""Documentos.aspx?REL_ID={0}"", 800, 600);return false;") %>'>
                             <%# Eval("REL_DOCUMENTO") %>
    </asp:LinkButton>
    Aqui o javascript:

    function openModal(pUrl, pWidth, pHeight) {
    	if (window.showModalDialog) {
    		return window.showModalDialog(pUrl, window,
    		  "dialogWidth:" + pWidth + "px;dialogHeight:" + pHeight + "px");
    	} else {
    		try {
    			netscape.security.PrivilegeManager.enablePrivilege(
    			  "UniversalBrowserWrite");
    			window.open(pUrl, "wndModal", "width=" + pWidth
    			  + ",height=" + pHeight + ",resizable=no,modal=yes");
    			return true;
    		}
    		catch (e) {
    			alert("Script não confiável, não é possível abrir janela modal.");
    			return false;
    		}
    	}
    Consegui abrir a janela modal, passando o parametro da linha do gridview, usando o linkButton.Na pagina que se abre eu pego esse ID e faco as devidas leituras na base de dados, para pegar as demais informacoes que serao exibidas.

    Isso esta otimo, mas como nem tudo e perfeito, agora eu preciso descobrir a sintaxe correta, para fechar a janela modal que se abrir, pois quando eu clico no botao fechar, ao invez da janela ser fechada, esta sendo aberta uma outra janela dentro dela.Essa janela modal, possui tambem outros botoes, sendo que cada um leva para uma pagina diferente e quando clico em um deles, uma nova janela Nao Modal e aberta, sendo que eu gostaria que ela fosse aberta dentro da janela modal.

    Bem, vamos por partes, como diria o esquartejador.

    Obrigado e um Abraco
    quarta-feira, 15 de abril de 2009 14:33