Não consigo atribuir função javascript somente quando existir anexo

08/01/2015

0

Tenho esse código:

<strong><a <%# Eval("DsPathDocumento") != null && !String.IsNullOrEmpty(Eval("DsPathDocumento").ToString()) ? String.Concat("href='/UpLoads/", Eval("DsPathDocumento"), "'") : "style='cursor: default; color:#000000;'" %>>
                            <%# Eval("NmTipoDocumento")%>
                        </a></strong>


Acontece que eu preciso aplicar um javascript, através dessa classe: `class="linkUpload"`
Essa classe só pode acontecer, quando eu criar o hyperlink, caso contrário a classe não pode ser chamada. Toda tentativa minha de colocar essa classe não funcionou. Se eu colocar logo após o a, tipo: `<strong><a class="linkUpload" <%# Eval("DsPathDocumento") != null && ...</a></strong>`, quando eu tiver documento ele chama o popup, ok, correto e quando eu não tiver link, também chama o popup em branco. Ele sempre monta o href, mesmo sem documento anexo, como já discuti aqui no SOPT. Abaixo meu javascript:

$(document).ready(function () {
    		$('.linkUpload').click(function (event) {
    			event.preventDefault();
    			window.open($(this).attr("href"), "popupWindow", "scrollbars=yes");
    		});
    	});


A pergunta é: Como eu faço para atribuir o javascript na classe somente quando houver documento anexo.

Assim: Se eu possuo documento anexo, a expressão ternária acima no post, deverá executar a etapa após o símbolo "?" e caso não possui anexo, então executa a etapa após o ":", certo? Bem, acontece que de qualquer forma e não sei porque, ele está criando o underline referente ao href mesmo quando não existe anexo. Eu tenho a classe "linkUpload" que deveria ser executada somente quando há anexo. Se eu coloco essa classe logo após a tag "a", ela fica valendo para todas as situações na expressão ternária, ou seja, com ou sem anexo e eu não consigo chamar uma expressão ou comando html de dentro das tags do Asp.Net, então gerou o post: Como eu faço para atribuir a função apenas quando houver link, ou seja, somente quando a primeira parte da expressão ternária for executada.

O que eu quero é isso, ou algo semelhante. Tenho essa tag asp.net: `<% %>`. Como eu chamaria essa classe: `class="linkUpload"` dentro da tag asp.net?

Tentei fazer um if para atender melhor, acho, e não estou conseguindo. Tentei de várias maneiras e essa forma foi a última tentativa antes desse post.

<% if(Eval("DsPathDocumento") != null && !String.IsNullOrEmpty(Eval("DsPathDocumento").ToString()))
                          {%>
                          <strong><a class="linkUpload" 
                          <% String.Concat("href='/UpLoads/", Eval("DsPathDocumento"), "'"); %>>
                          </a></strong> <%}%>
                          <%else
                          { %>                      
                          <"style='cursor: default; color:#000000;'">
                          Eval("NmTipoDocumento")
                          <%}%>


Esse é o erro:

Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.
Pjava

Pjava

Responder

Posts

08/01/2015

Joel Rodrigues

Se você apenas criar o link, sem classe, e não houver documento, o href vai ficar em branco? Se sim, você pode simplificar e filtrar apenas os links que tiverem href diferente de vazio.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar