j_insert_update – zaawansowane programowanie cz. druga

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=

parametr scriptonload

Użytkownik po kliknięciu na polecenie edycji kartoteki kontrahenta otrzyma następujący efekt:

parametr scriptonload szerokosc lefpanel

 

 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:

parametr scriptonready

 

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

parametr scriptonready nazwa kontrahenta

 

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

parametr scriptonready placeholder

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

parametr scriptonready placeholder skroco

 

 

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.