Obecnie mam gridwowy z ItemTemplate, który działa jako link, który wywołuje funkcję JavaScript:

 <ItemTemplate>
            <a href="javascript:;" onclick="simpleCart.add( 'name=<%# Eval("Name") %>' , 'price=<%# Eval("Price") %>' , 'quantity=1' );">Add To Cart</a>
            </ItemTemplate>

Muszę dodać pewną funkcjonalność, którą mogę zrobić tylko w C #, więc myślałem o wymianie linku za pomocą przycisku i po kliknięciu przycisku wywołuje zarówno funkcję C #, jak i funkcję JavaScript (nie muszą interakcji / Udostępnij dowolne dane). Czy to nawet możliwe?

0
Matt 3 grudzień 2011, 15:05

3 odpowiedzi

Najlepsza odpowiedź

Możesz użyć LinkButton i ustaw właściwość OnClientClick, aby wykonać funkcję JavaScript przed wyjazdem na serwer. Możesz nawet anulować połączenie serwera, jeśli zwrócisz false z tej funkcji:

<asp:LinkButton 
    id="LinkButton1"
    text="Add To Cart"
    OnClientClick='<%# string.Format("&quot;name={0}&quot;, &quot;price={1}&quot;, &quot;quantity=1&quot;", Eval("Name"), Eval("Price")) %>'
    OnClick="LinkButton1_Click"
    runat="Server" />
1
Darin Dimitrov 3 grudzień 2011, 11:33

Możesz użyć właściwości OnClientClick LinkButton, aby wykonać skrypt klienta i {x2}} wydarzenie dla kodu serwera

Oto kod kodu i bardziej szczegółowy opis http : //msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.Linkbutton.onclientClick.aspx.

1
Nastya Kholodova 3 grudzień 2011, 11:34

Tak, to możliwe.

Brzmi to tak, jakbyś mógł uniknąć pełno-stronicowego zwrotu, dzięki czemu można zadzwonić do kodu strony serwera albo za pomocą wywołania zwrotnego ASP.NET lub z bardziej waniliową rozmową AJAX, być może za pomocą jQuery. (Zakładam, że twój kod C # jest na serwerze, a nie w lokalnej aplikacji Silverlight).

0
RickNZ 3 grudzień 2011, 11:32