2008-08-05 8 views
30

Wie grenze ich einen Javascript-Databound-String-Parameter in einem Anker Ereignis?Triple Quotes? Wie grenze ich einen datengebundenen JavaScript-Zeichenfolgenparameter in ASP.NET ein?

  • Ich habe ein Anker-Tag in einem ASP.NET Repeater-Steuerelement.
  • Das Ereignis OnClick des Ankers enthält einen Aufruf einer JavaScript-Funktion.
  • Die JavaScript-Funktion akzeptiert eine Zeichenfolge für den Eingabeparameter.
  • Der String-Parameter wird mit einem datengebundenen Wert aus dem Repeater gefüllt.

Ich brauche die "doppelte Anführungszeichen" für die Container.DataItem.
Ich brauche die "einfachen Anführungszeichen" für die .

Und ich brauche noch ein weiteres Trennzeichen (Triple-Anführungsstriche?) Für die Eingabe-String-Parameter der Javascript Funktionsaufruf.

Da ich nicht wieder 'einfache Anführungszeichen' verwenden kann, wie stelle ich sicher, dass die Javascript-Funktion weiß, dass der Eingabeparameter eine Zeichenfolge und keine Ganzzahl ist?

Ohne die zusätzlichen Anführungszeichen um den Eingabezeichenfolgenparameter denkt die Javascript-Funktion, dass ich eine ganze Zahl übergebe.

Prost im Voraus für jedes Wissen, das Sie fallen lassen können.

Der Anker:

<a id="aShowHide" onclick='ToggleDisplay(<%# DataBinder.Eval(Container.DataItem, "JobCode") %>);' >Show/Hide</a>  

und hier ist das Javascript:

<script language="JavaScript" type="text/javascript"> 
/* Shows/Hides the Jobs Div */ 
function ToggleDisplay(jobCode) 
{ 
    /* Each div has its ID set dynamically ('d' plus the JobCode) */ 
    var elem = document.getElementById('d' + jobCode); 

    if (elem) 
    { 
     if (elem.style.display != 'block') 
     { 
      elem.style.display = 'block'; 
      elem.style.visibility = 'visible'; 
     } 
     else 
     { 
      elem.style.display = 'none'; 
      elem.style.visibility = 'hidden'; 
     } 
    } 
} 
</script> 

Antwort

20

Ich hatte vor kurzem ähnliches Problem und die einzige Möglichkeit, es zu lösen, war die Verwendung von einfachen alten HTML-Codes für einzelne (&#39;) und doppelte Anführungszeichen (&#34;).

Quellcode war insgesamt Chaos natürlich, aber es hat funktioniert.

Versuchen

<a id="aShowHide" onclick='ToggleDisplay(&#34;<%# DataBinder.Eval(Container.DataItem, "JobCode") %>&#34;);'>Show/Hide</a> 

oder

<a id="aShowHide" onclick='ToggleDisplay(&#39;<%# DataBinder.Eval(Container.DataItem, "JobCode") %>&#39;);'>Show/Hide</a> 
+0

Winna !!! Danke Lubos. HTML-Codes sortiert es (und ja, es war chaotisch, aber es funktioniert). Lösung: onclick = 'ToggleDisplay (" <% # DataBinder.Eval (Container.DataItem, "JOB_Code")%> ");' – Dhaust

+2

" ist doppelte Anführungszeichen. ' ist ein Angebot – Mahesh

0

Ohne die zusätzlichen Anführungszeichen um den Eingabe-String-Parameter, denkt, dass die Javascript-Funktion in einer ganzen Zahl Ich bin vorbei .

Können Sie eine rudimentäre String-Funktion ausführen, um JavaScript zu zwingen, es in eine Zeichenfolge zu ändern? Wie

value = value + "" 
0

Versuchen Sie, den zusätzlichen Text in den serverseitigen Skriptblock und verketten.

onclick='<%# "ToggleDisplay(""" & DataBinder.Eval(Container.DataItem, "JobCode") & """);" %>' 

Edit: Ich bin mir ziemlich sicher, dass Sie auch außerhalb des Skriptblocks doppelte Anführungszeichen verwenden könnten.

0

Variable Passing ohne Apostroph oder doppeltes Anführungszeichen

<html> 
    <head> 
    </head> 
    <body> 
     <script language="javascript"> 
     function hello(id, bu) 
     { 
      alert(id+ bu); 
     } 
     </script> 
     <a href ="javascript: 
      var x = &#34;12&#34;; 
      var y = &#34;fmo&#34;; 
      hello(x,y)">test</a> 
    </body> 
</html> 
3
onclick='javascript:ToggleDisplay("<%# DataBinder.Eval(Container.DataItem, "JobCode")%> "); ' 

Verwendung wie oben zu funktionieren.