2010-09-30 9 views
8

il mio pulsante di collegamento -come associare la funzione javascript all'evento OnClientClick con Eval?

<asp:LinkButton runat="server" ID="lbtnEdit" Text="edit" OnClientClick="javascript:msgDisp('<%# Eval(LocationId).toString() %>')" /> 

e il javascript msgDisp è-

<script type="text/javascript" language="javascript"> 
    function msgDisp(lid) {    
     alert(lid); 
    } 
</script> 

ma non è giiving LocationID nel pop, ma l'intera stringa <% #% ......> è in arrivo nel messaggio popup. Come posso passare i valori Eval in javascript.

+0

Il pulsante di collegamento in un controllo di databound? In caso contrario, è necessario chiamare 'lbtnEdit.DataBind()'. –

risposta

12

È possibile creare l'intero contenuto di OnClientClick come una stringa all'interno delle parentesi del codice e verrà visualizzato come previsto.

<asp:LinkButton runat="server" ID="lbtnEdit" Text="edit" 
    OnClientClick='<%# "msgDisp(" + Eval("LocationId") + ");" %>' /> 

Ciò presuppone LocationID è una valida Number-non ci sono virgolette per avvolgere il vostro valore quando si rende, quindi l'output di qualcosa come msgDisp(hello); sta per rompere. Non so come risolverlo in questo modo, quindi se lo dovessi fare raccomanderei di impostare il lato server OnClientClick durante l'evento ItemDataBound. Ecco cosa vorrebbe se il genitore è un controllo Repeater.

protected void notesRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    MyClass item = (MyClass)e.Item.DataItem; 
    LinkButton lbtnEdit = (LinkButton)e.Item.FindControl("lbtnEdit"); 
    lbtnEdit.OnClientClick = string.Format("msgDisp('{0}');", item.LocationId); 
} 
+0

se vuoi virgolette come in 'msgDisp ('hello');' quindi puoi usare l'entità HTML come: 'OnClientClick = '<% #" msgDisp (' "+ Eval (" LocationId ") +" ') ;" %> ' '. –

2

Se hai trovato i tag di espressione vincolanti (<% # ...%>) resi nel markup, significa che il LinkButton non è inizializzato in un contenitore vincolante. Un contenitore di rilegatura può essere, come dimostrato da @lincolnk, un elemento Repeater o GridView, una cella di Calendar, ecc. Inoltre, non è necessario precedere la chiamata di funzione con "javascript:". Il valore della proprietà OnClientClick viene visualizzato come gestore dell'evento onclick dell'ancora.

2

Sembrava ovunque sulla rete. Tutti dicono usare CodeBehind. Vedere la mia soluzione, che funziona anche quando il mio datavalue ha una singola citazione in esso come O'Neal. Questo non funzionerà se l'elemento di dati contiene doublequotes. Ma funziona per quello che avevo bisogno di fare, che è stato inserito nel nome di una persona. Notare le barre retroverse all'interno della chiamata di avviso.

OnClientClick="<%#string.Format(&quot;alert(\&quot;{0}\&quot;); return false; &quot;, Eval(&quot;NAME&quot;))%>"** 
0

Voglio ringraziare lincolnk per la sua risposta. Attualmente sto contribuendo a creare un nuovo social network per googam.com. Ho cercato per alcuni giorni una soluzione per visualizzare il profilo di un utente, in un datalist, in un popup di finestra di dialogo modale jquery. L'impostazione del pulsante di collegamento OnClientClick nell'evento ItemDataBound ha risolto il problema di passare l'id utente alla funzione JQuery per aprire un controllo utente acsx nella finestra popup.

jQuery(document).ready(function() { 
     var mydiv = jQuery("#mydialog").dialog({ 
      autoOpen: false, 
      resizable: false, 
      modal: true, 
      width: '500', 
      height: '400' 
     }).css("font-size", "0.8em"); 
    }); 

    function ShowPopup(uid) { 
     var mydiv = jQuery("#mydialog") 
     //alert(uid) 
     // Load the content using AJAX 
     mydiv.load('Profile.aspx?id=' + uid); 
     // Open the dialog   
     mydiv.dialog('open'); 
    } 

//////////////

Protected Sub DataList1_ItemDataBound(ByVal sender As Object, ByVal e As DataListItemEventArgs) 
    If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then 
     Dim imageControl = TryCast(e.Item.FindControl("Image1"), Image) 
     Dim Uid As String = imageControl.ImageUrl 

     Dim ProfileBtn As LinkButton = TryCast(e.Item.FindControl("ProfileButton"), LinkButton) 
     ProfileBtn.OnClientClick = String.Format("ShowPopup('{0}');return false;", Uid) 

    End If 
End Sub 
1

Si può fare come onclick =' <% # "msgDisp (" + Eval ("LocationID") + ");" %> '

Problemi correlati