Atrybut Drzewo Wyboru – prezentacja struktury AD w atrybucie

Facebooktwitterpinterestlinkedinmail

dotyczy wersji: 8.2 do 2017, nie dotyczy wersji 2019 i wyższych, autor: Kamil Nędza

Atrybut typu „Drzewo wyboru” pozwala zamieścić na formularzu dane w formie rozwijalnego drzewa. Atrybut służy do wybrania jednej wartości. Dane w tej formie mogą być bardziej przejrzyste i czytelne dla użytkownika. Drzewo znakomicie nadaje się do prezentacji struktury podległościowej oraz danych, które w liściach drzewa mają te same nazwy, ale już inne identyfikatory i ścieżki do tych liści.

 

Opis konfiguracji

Kluczem do poprawnego skonfigurowania atrybutu jest zwrócenie danych w odpowiedniej formie w źródle danych atrybutu. Istnieją dwa sposoby skonfigurowania źródła danych do wyświetlenia w drzewie:

  1. Konfiguracja przy użyciu ParentID – konfiguracja źródła danych musi zawierać 3 kolumny. Pierwsza będącą identyfikatorem, drugą zawierającą nazwę wyświetlaną, oraz trzecią której wartości będą wskazywać na wartości z pierwszej kolumny. Trzecia kolumna służy do budowania drzewa – wartości w niej są parowane z wartościami identyfikatorów. Ważne: trzecia kolumna musi mieć nazwę ParentID.
    Przykład: jeżeli w rekordzie danych w kolumnie ParentID znajduje się wartość „1”, wiersz ten zostanie umieszczony poziom niżej w hierarchii drzewa dla rekordu o identyfikatorze „1”, jako jego potomek. Jeżeli dany rekord nie ma wypełnionej wartości w kolumnie ParentID, to rekord ten jest umieszczany na szczycie hierarchii drzewa.
  2. Konfiguracja przy użyciu ścieżek – konfiguracja danych musi zwrócić 2 kolumny. W tym trybie pierwsza kolumna zawiera identyfikator, zaś druga odpowiednio sformatowaną nazwę wyświetlaną. Nazwę wyświetlaną należy zwrócić w postaci „<nazwa wyświetlana z poziomu 1>/<nazwa wyświetlana z poziomu 2>/<nazwa wyświetlana z poziomu 3>/ itd.”. Na podstawie tych dwóch kolumn, zbudowane zostanie drzewo.
    Przykład: Gdy zwróconą wartością wyświetlaną będzie „1/2”, rekord zostanie umieszczony na drugim poziomie hierarchii pod węzłem „1”. Należy jednak mieć na uwadze możliwość wyboru z drzewa. Dla tego przypadku nie będzie możliwe wybranie wartości „1”, ponieważ możliwe do wyboru są wyłącznie węzły kończące zwrócone ścieżki.

Atrybut „Drzewo wyboru” sam rozpoznaje rodzaj zwracanych danych na podstawie obecności kolumny o nazwie ParentID.

 

Przykłady konfiguracji

Poniżej w formie tabelarycznej przedstawiono przykład konfiguracji dla grafu:

1_PL_ENGWidok realizowanego grafu.

 

 Rodzaj konfiguracji  Z użyciem ParentID  Z użyciem ścieżek
 Zapytanie SQL: query1  query2
Zwracane dane: id1en pa1en
Konfiguracja atrybutu: id2pl pa2pl
Widok drzewa na formularzu: idpaenpl1+2 idpaenpl1+2

 

Widok drzewa na formularzu jest identyczny, jednak w drugim przypadku nie ma możliwości ustawienia, aby możliwe były do wyboru stany pośrednie. Dlatego już przed dodaniem atrybutu „Drzewo wyboru” należy wiedzieć, czy ma być możliwość wyboru pośrednich węzłów. Jeżeli tak – niezbędne jest zastosowanie konfiguracji przy użyciu ParentID.

 

Przykład wykorzystania – struktura AD w atrybucie Drzewo wyboru

Drzewo wyboru znakomicie sprawdza się do prezentowania struktury AD. Przykładowo atrybut ten można wykorzystać do przedstawienia wszystkich pracowników podległych dla danego pracownika. W konfiguracji posłużono się tablicą rekursywną i wykorzystano pierwszy sposób konfiguracji atrybutu, czyli z wykorzystaniem ParentID. W źródle danych użyto następującego zapytania:

2_pl
Zapytanie w źródle danych atrybutu Drzewo wyboru

 

Zapytanie zwraca bieżącego użytkownika jako rekord o najwyższej hierarchii w drzewie, a następnie rekursywnie zwraca wszystkich podległych pracowników. W efekcie atrybut Drzewa wyboru zwróci wszystkich pracowników, którzy są niżej w strukturze AD i podlegają pod bieżącego użytkownika.

Uwaga: w przypadku jeżeli zapytanie zwraca błąd w momencie próby wejścia do zaawansowanej konfiguracji, należy „spreparować” zapytanie SQL w formie prostej (najprostszy możliwy select), które będzie zwracało identyczne kolumny. Wtedy należy wejść w konfigurację, skonfigurować atrybut i następnie zapytanie SQL zastąpić właściwym.

Efekt widoczny dla użytkownika może wyglądać następująco:

3_PL
Wartości widoczne do wyboru dla zalogowanego użytkownika

One thought to “Atrybut Drzewo Wyboru – prezentacja struktury AD w atrybucie”

  1. Hi!
    Wygląda na to, że ID i ParentID muszą być typu integer (ew. inny numeryczny, nie testowałem, ale na stringach nie chciało mi działać – Wersja: 2016.1.3.179).
    A jeśli mamy dwa elementy, z których jeden ma ParentID równy NULL, a drugi równy zero, to oba elementy są umieszczane na najwyższym poziomie – wyrastają de facto dwa sklejone ze sobą drzewa 🙂
    Pozdrawiam, P.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *