x_tree.aspx

Transakcja tworzy hierarchiczną listę wyboru pozycji na zasadzie rozwijanego „drzewka” wyświetlane jest po lewej stronie ekranu, wybór pozycji z drzewka uruchamia wskazaną transakcję i wyświetla ją z prawej strony okna.

x_tree

 

 

 

Elastyczność transakcji wynika z faktu że „drzewko” może być zbudowane z dowolnego prawidłowego zapytania SQL zwracającego dane na zasadzie hierachicznej, czyli poszczególne rekordy mają odwołanie do rekordu nadrzędnego.

Domyślnie dane hierarchiczne odczytywane są z tabeli knfld, do przechowywania struktury folderów.

 

Uruchamianie

Transakcję uruchamia się podając parametr kod wskazujący na unikalny identyfikator skorowidza DRZ, który zawiera zapytanie do wykonania.

przykład:

roles_sys/x_tree.aspx?kod=PUBLIC

gdzie PUBLIC oznacza pozycję ze skorowidza DRZ

skorowidz drz

 

Skorowidz zdefiniowaną jedną pozycję o kodzie PUBLIC

skorowidz drz grid

 

gdzie zdefiniowane muszą być 2 zapytania SQL:

  • Zapytanie SQL PARENT – dotyczy pozycji dodawanych do  drzewka składających się na poszczególne poziomy
  • Zapytanie SQL ROOT – dotyczy pozycji jakie mają być załadowane na start jako główne pozycje drzewa

 

Zapytanie ROOT zwraca wiersze oznaczone parent jako 0 – brak określonego poziomu nadrzędnego.

SELECT [FOLDER], [NRIDFLD], IKONA FROM [knfld] WHERE [PARENT]=0

Zapytanie PARENT zwraca pozostałe rekordy mające być pochodnymi poziomu root – posiadają przypisany poziom nadrzędny

SELECT [FOLDER], [NRIDFLD], [ACH], [PARENT], [IKONA], TRANSAKCJA + ‚?refno=’ + UPPER(NRIDFLD) AS TARGETURL FROM [knfld] WHERE [PARENT]>0

 

W efekcie budowane jest drzewko, gdzie pozycje zapytania ROOT są ładowane automatycznie, natomiast pozycje z zapytanie PARENT są pobierane tylko na wyraźne życzenie użytkownika, gdy klika on ikonę rozwinięcia pozycji drzewa.

x_tree rozwinięte

 

Zapytanie ROOT

Zapytanie musi zwracać dane z kolumnami:

  • FOLDER – nazwa pozycji w drzewku wyświetlana dla użytkownika
  • NRIDFLD – unikalny identyfikator pozycji drzewka
  • IKONA – opcjonalny parametr pozwalający wskazać inny niż domyślny plik ikony. Jeżeli nie będzie tej kolumny to ładowany jest plik domyślny, jeżeli jest podana i wartość jest > 0 to ustawiony zostanie wskazany plik.

Zapytanie PARENT

Zapytanie musi zwracać dane z kolumnami:

  • FOLDER – nazwa pozycji w drzewku wyświetlana dla użytkownika
  • NRIDFLD – unikalny identyfikator pozycji drzewka
  • ACH – kod oznaczający status pozycji, domyślnie 1
  • PARENT – wskazanie identyfikatora pozycji nadrzędnej – odwołanie do identyfikatora NRIDFLD
  • IKONA – wskazuje jaki plik ikony ma być użyty dla danej pozycji, brak ikony zostanie podstawiona domyślna ikona w zależności od wartości ACH
  • TARGETURL – kolumna wskazuje jaka transakcja ma być uruchomiona gdy użytkownik kliknie muszką w pozycję menu drzewko.

 

Szerokość

Panel zawierający drzewko domyślnie ma rozmiar 30% szerokości ekranu użytkownika, można jednak zmienić ustawienie szerokości lewego panelu z drzewkiem podając parametr przy uruchamianiu transakcji leftwidth

np. KOD=PUBLIC&leftwidth=200

oznacza że lewa część okna będzie szerokości 200 pikseli

x_tree szerokosc 200

 

jeżeli podamy inną wartość zmiennej leftwidth to zmienimy szerokość lewego panelu, np. leftwidth=400

x_tree szerokosc 400

 

 

Rozmiar czcionki

Jeżeli chcemy, aby informacje wyświetlane w drzewku były w innym rozmiarze czcionki niż domyślny to należy przekazać parametr fontsize

przykładowo:

KOD=PUBLIC&fontsize=14

x_tree fontsize 14

 

KOD=PUBLIC&fontsize=8

x_tree fontsize 8

 

Zmienne warunku filtrowania

@KTO – zalogowany użytkownik

Zapytanie PARENT pobierające dane z bazy możemy filtrować wg nazwy zalogowanego użytkownika, aby ograniczyć listę folderów tylko do tych, które są przypisanego do zalogowanej osoby.

W zapytaniu w klauzuli filtrowania WHERE należy użyć zmiennej  @KTO, np.

SELECT [FOLDER], [NRIDFLD], [ACH], [PARENT], [IKONA], TRANSAKCJA + ‚?refno=’ + UPPER(NRIDFLD) AS TARGETURL FROM [knfld] WHERE LOGIN=@KTO AND [PARENT]>0

Zmienna @KTO zostanie zastąpiona nazwą zalogowanego użytkownika programu.

@ROLA – kod roli w jakiej pracuje użytkownika

zasada działania podobna do filtrowania wg nazwy użytkownika, zmienna podstawiana jest wartością w zależności od zalogowanego użytkownika

SELECT [FOLDER], [NRIDFLD], [ACH], [PARENT], [IKONA], TRANSAKCJA + ‚?refno=’ + UPPER(NRIDFLD) AS TARGETURL FROM [knfld] WHERE ROLA=@ROLA AND [PARENT]>0

Wyświetlone zostaną pozycje przypisane do roli w jakiej pracuje użytkownik

@ROLASYS – kod roli systemowej w jakiej pracuje użytkownika

zasada działania podobna do filtrowania wg nazwy użytkownika, zmienna podstawiana jest wartością w zależności od zalogowanego użytkownika

SELECT [FOLDER], [NRIDFLD], [ACH], [PARENT], [IKONA], TRANSAKCJA + ‚?refno=’ + UPPER(NRIDFLD) AS TARGETURL FROM [knfld] WHERE ROLASYS=@ROLASYS AND [PARENT]>0

Wyświetlone zostaną pozycje przypisane do roli w jakiej pracuje użytkownik

 

@ODDZIAL – kod oddziału użytkownika

zasada działania podobna do filtrowania wg nazwy użytkownika, zmienna podstawiana jest wartością w zależności od zalogowanego użytkownika

SELECT [FOLDER], [NRIDFLD], [ACH], [PARENT], [IKONA], TRANSAKCJA + ‚?refno=’ + UPPER(NRIDFLD) AS TARGETURL FROM [knfld] WHERE ODDZIAL=@ODDZIAL AND [PARENT]>0

@MPK – kod komórki użytkownika

zasada działania podobna do filtrowania wg nazwy użytkownika, zmienna podstawiana jest wartością w zależności od zalogowanego użytkownika

SELECT [FOLDER], [NRIDFLD], [ACH], [PARENT], [IKONA], TRANSAKCJA + ‚?refno=’ + UPPER(NRIDFLD) AS TARGETURL FROM [knfld] WHERE MPK=@MPK AND [PARENT]>0

Wyświetlone zostaną pozycje przypisane do oddziału w jakim pracuje użytkownik