Programowanie transakcji j_insert_update za pomocą javascript pozwala na sterowanie zachowaniem i wykonywaniem dowolnych dodatkowych zadań, dzięki napisaniu własnych skryptów i ich dołączaniem do transakcji. Dołączony plik *.js zawierający zestaw funkcji pozwala na ich selektywne uruchamianie w zależności od zdarzenia. Są jednak pewne zadania, które programista chciałby (albo zmuszony jest) uruchamiać natychmiast przy ładowaniu (tworzeniu) strony lub zaraz po jej zakończeniu, gdy strona jest gotowa do wyświetlenia w oknie przeglądarki.
Niniejszy artykuł opisuje możliwości konfiguracji i zastosowania automatycznie uruchamianych funkcji przy zdarzeniach OnLoad (przy ładowaniu strony) i OnReady (po zakończeniu ładowania i zgłoszenia gotowości do jej wyświetlenia, załadowaniu wszystkich obiektów na stronie).
Parametry
W celu przekazania informacji jaka funkcja ma zostać uruchomiona należy przy uruchamianiu transakcji j_insert_update.aspx przekazać odpowiednie parametry opcjonalne:
scriptonload
Parametr scriptonload przekazuje nazwę funkcji jaka ma być uruchamiana (wykonana) natychmiast przy ładowaniu strony. Przykład wywołania:
j_insert_update.aspx?scriptonload=MojaOnLoad
scriptonready
Parametr scriptonready przekazuje nazwę funkcji jaka ma być uruchamiana (wykonana) natychmiast przy zakończeniu ładowania strony. Przykład wywołania:
j_insert_update.aspx?scriptonload=MojaOnReady
Prosty przykład zdarzenia scriptonload
Chcemy za pomocą JQuery zmienić szerokość lewego panelu na 400 pikseli, którego domyślna szerokość to 200 pikseli, w pliku dołączanym definiujemy więc funkcje, która lewy panel o nazwie ssLeft zmieni jej właściwość:
function MojaOnLoad() { $('#ssLeft').jqxSplitter({ panels: [{ size: 400, collapsible: false }, { collapsible: false }] }); }
W konfiguracji uruchomienia transakcji dodajemy parametry uruchomienia wskazujące plik ze skryptem dołączany ../role_crm/crm_knkon oraz wskazujemy jaka funkcja ma zostać uruchomiona MojaOnLoad:
script=../role_crm/crm_knkon&scriptonload=MojaOnLoad()&refno=CRM_INS_KNKON&return=ZamknijOkno&nridodn=
Użytkownik po kliknięciu na polecenie edycji kartoteki kontrahenta otrzyma następujący efekt:
Prosty przykład zdarzenia scriptonready
Chcemy, aby po załadowaniu strony kontrolka NAZWA KONTRAHENTA (NAZWA) została wpisana informacja – zachęta – „Podaj unikalną nazwę kontrahenta”
ustawiamy więc parametry uruchomienia transakcji j_insert_update.aspx
script=../role_crm/crm_knkon&scriptonready=MojaOnReady()&refno=CRM_INS_KNKON&return=ZamknijOkno&nridodn=
w następujący sposób:
W efekcie po uruchomieniu przez użytkownika transakcji zostanie wykonana funkcja MojaOnReady znajdująca się w pliku role_crm/crm_knkon.js
W kolejnym kroku przygotowujemy skrypt MojaOnReady, którego zadaniem będzie ustawienia właściwości tzw placeholder, czy tekst jaki będzie wyświetlany tylko gdy pole jest puste, tekst stanowić ma dla użytkownika podpowiedź co należy w danym polu wpisać.
Sprawdzamy jak nazywa się kontrolka której chcemy zmienić właściwość, jest to kontrolka NAZWA
W naszym pliku crm_knkon.js umieszcamy więc funkcje MojaOnReady w następujący sposób:
function MojaOnReady() { $("#NAZWA").attr("placeholder", "Podaj unikalną nazwę kontrahenta"); }
i sprawdzamy działanie, uruchamiając program
Kontynuując możemy ustawić wartość placeholder dla pola nazwa skrócona zmieniając funkcje:
function MojaOnReady() { $("#NAZWA").attr("placeholder", "Podaj unikalną nazwę kontrahenta"); $("#SKROCO").attr("placeholder", "Akronim klienta"); }
W efekcie otrzymamy
Podsumowanie
Za pomocą parametrów scriptonload oraz scriptonready możemy uruchamiać automatycznie wskazane funkcje, które będą wykonywać dowolne proste jak i zaawansowane skrypty java, zmieniać wygląd, sposób działania formularza. Zakres zmian jest prawie nieograniczony i zależy od umiejętności programisty i jego pomysłowości (i znajomości studiosystem, javascript i JQuery).
W kolejnych artykułach przykłady bardziej zaawansowane, pozwalające na dynamiczne działania, zmiany i obliczenia, a także odczyt i zapis danych w bazie SQL z wykorzystaniem WebService.