Tabelle Zeile onclick-Ereignis, das ausgeführt wird codebehind
Ich habe geerbt ein ASP.NET Projekt, das die schlecht gestaltete HTML; in einem Abschnitt sind die tags gewickelt, mit einem tag zu ermöglichen "klicken Sie auf die Zeile, um die Informationen anzeigen" - Funktionalität. Der code ist:
<asp:LinkButton ID="ViewArticle" runat="server" CommandName="Navigate" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "id") %>' >
<tr runat="server" class="list_item">
<td>some data</td>
<td>some data</td>
<td>some data</td>
</tr>
</asp:LinkButton>
Ich würde gerne etwas machen wie:
<tr runat="server" class="list_item" onclick="doRowPostbackFunction('<%# DataBinder.Eval(Container.DataItem, "id") %>');">
<td>some data</td>
<td>some data</td>
<td>some data</td>
</tr>
Wie gehe ich binden ein JavaScript "onclick" - Ereignis, um die codebehind?
- Wenn ich das richtig verstehe, wollen Sie Ihr JavaScript, um das initiieren eines server-code ("codebehind") - Methode/Funktion; Nach dem server gerendert wurde Ihrer Seite, sind Sie in der client-Bereich - und der einzige Weg, um eine Verbindung mit Ihrem server-code ist über einen web-service. Ein anderer Weg, nicht über einen web-service-rendering/Injektion die Daten vom server auf Ihrer Seite, somit haben Sie die Daten im client verfügbar.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mithilfe von jQuery können Sie das folgende tun und zum auslösen eines Postbacks:
ODER verwenden Sie den onclick-Ereignis der Reihe...
<tr onclick="doPostBack('<%#DataBinder.Eval(Container.DataItem, "id") %>')">
...und auslösen der javascript-Funktion.
Könnten Sie machen Sie Ihre Seite (oder-Kontrolle, wenn die in eine Kontrolle) implementieren IPostBackEventHandler Schnittstelle, und verwenden Sie ClientScriptManager.GetPostBackEventReference Methode (mit Seite.ClientScript Anwesen, um einen Verweis auf ClientScriptManager), um eine js-Methode-Aufruf-string, wird ein postback an Ihrer Seite. Als Kontrolle argument GetPostBackEventReference-Methode verwenden, Ihre Seite.
Legen Sie dann onclick-Eigenschaft des tr zu, dass die js-Methode-Aufruf-string.
Beispiel
In aspx:
Im codebehind:
<tr onclick="<%# _jsPostBackCall %>;">
In den Quelltext anzeigen sehe ich die wörtliche<%# _jsPostBackCall %>
<%#
es<%=
.<%=
, also versuchte ich die<%#
; der ganze rest des Codes wurde mit der<%#
. So oder so, es gibt<%= _jsPostBackCall %>
anstelle des JavaScript-Codes.Können Sie einfach
Hier eventName code-behind-event-handler