Akcja w tabeli [ASP.NET]


(szydera_) #1

Witam,

mam problem, którym nie mogę sobie poradzić. Jest jakaś tabela (GridView) zawierająca jakieś tam kolumny, jedną z nich ma być "Akcja". Chciałbym zrobić tak, by klikając w "Zamów" (w kolumnie Akcja) otwierało się nowe okno popup przy pomocy JavaScriptu (aby nie wykorzystywać serwera). Ponadto co bardzo ważne, muszę mieć możliwość przekazania parametru do tego nowego okna.

Jak to zrobić?

Póki co otwieram okno bez problemu, ale nie wiem jak przekazać do niego jakiś parametr...

Tak wygląda definicja kolumny Akcja:

runat="server"

                                Text="Zamów"

                                OnClientClick="javascript:popUp('OrderBookFormPopup.aspx')">

A tak wywołanie okienka (póki co sztucznie przekazywane ID = 2). Jak móc dowolnie definiować parametry? Docelowo oczywiście ma on być jedną z wartości z tabelki z tego samego wiersza...

function popUp(URL) {

            day = new Date();

            id = day.getTime();

            URL = URL + "?bookID=2";

            alert(URL);

            eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=1,statusbar=1,menubar=0,resizable=1,width=400,height=400,left = 420,top = 150');");

        }

Z góry dziękuję za bardzo potrzebną mi pomoc, to co znalazłem w googlach póki co nie działa jak trzeba...


(Somekindsoftware) #2

Zakładam, że Id jest właściwością obiektu, których kolekcję bindujesz do GridView:

OnClientClick='<%# string.Format("OrderBookFormPopup.aspx?bookID={0};", Eval("Id")) %>'

(szydera_) #3

Niestety nie działa coś takiego...

Zresztą w tym co podałeś nie widzę nic javascriptowego, więc jak to się ma wywołać? Zależy mi, żeby otworzenie popupa nie wpływało na stronę pod spodem.

Przepraszam, że nie odpisałem od razu, ale nie mogłem tego wcześniej sprawdzić. Może jakieś inne podejście?


(Somekindsoftware) #4

:shock:

Normalnie. Wklej sobie wywołanie funkcji javascriptowej i nie marudź. Pokazałem Ci jak wkleić jakąś wartość z bindowanego wiersza do LinkButton.OnClientClick, chyba tego chciałeś, nie?

W Twoim wydaniu to może być mniej więcej coś takiego:

OnClientClick='<%# string.Format("javascript:popUp('OrderBookFormPopup.aspx?bookID={0}');", Eval("Id")) %>'

A w funkcja popUp niech przyjmuje w parametrze URL i go otwiera.


(szydera_) #5
Text="Zamów" Visible='<%# Eval("Avaible") %>'

OnClientClick='<%# string.Format("javascript:popUp('OrderBookFormPopup.aspx?bookID={0}');", Eval("ID")) %>' >

Tak to wygląda u mnie. Próba skompilowania kończy się komunikatem: Error 1 The server tag is not well formed. i pojęcia nie mam dlaczego. Np. tag:

działa dobrze...


(Somekindsoftware) #6

Zamień apostrofy na cudzysłowy (oczywiście z backslashami). Wartości tagów serwerowych nie mogą w sobie zawierać apostrofów, jeśli same są w apostrofach.


(szydera_) #7

Zanim przeczytałem Twoją odpowiedź udało mi się samemu. Dzięki wielkie za pomoc :slight_smile: