PDA

Zobacz pełną wersję : Sublista dla pola typu 'lista wyboru' w Sobi2



brzoska
20-06-2009, 14:25
Witam!
Planuję utworzyć katalog sprzętu komputerowego przy użyciu komponentu Sobi2 i chciałbym dla pola typu 'lista wyboru' uzyskać taki sam efekt jak w wyszukiwarce komponetu przy wybieraniu kategorii: wybierając kategorię nadrzędną wyświetlane są do wyboru kategorie podrzędne itd.. aż wybierzemy dla nas właściwą. Ja chcę uzyskać kilka takich pól np. wybieramy markę komputera: 'toshiba' i wyskakuje nam lista z wszystkimi dostępnymi modelami 'toshiba', wybieramy pole 'System operacyjny' wyswietlana jest lista modeli dla wybranego systemu. Czy w ogóle jest to możliwe ? Może istnieje jakiś inny komponent w którym można to zrealizować.
Bardzo proszę o pomoc ew. o linki gdzie szukać rozwiązania.
Pozdrawaiam !

.............

Mayster
21-06-2009, 17:42
Istnieją dwa sposoby:
A.

Dołączamy do strony formularza skrypt JS który obsłuży zmianę listy opcjii na podstawie wcześniej wybranej grupy.
Wcześniej musimy odpowiednio pogrupować wszystkie opcje pola poprzez dodanie sufixu np: "_group_{identyfikator grupy}" do nazwy opcji. Przykładowo mamy utworzone pole w którym wybieramy model samochodu field_model:

field_model_opt_1 => "Audi A4"
field_model_opt_2 => "Audi A5"
field_model_opt_3 => "Audi A6"
field_model_opt_4 => "Audi A8"
field_model_opt_5 => "BMW Seria 1"
field_model_opt_6 => "BMW Seria 3"
field_model_opt_7 => "BMW Seria 5"Dzielimy opcje na 2 grupy. Dla "Audi" do nazwy opcjii dodajemy _group_1 a dla "BMW" dodajemy _group_2:
field_model_opt_1_group_1 => "Audi A4"
field_model_opt_2_group_1 => "Audi A5"
field_model_opt_3_group_1 => "Audi A6"
field_model_opt_4_group_1 => "Audi A8"
field_model_opt_5_group_2 => "BMW Seria 1"
field_model_opt_6_group_2 => "BMW Seria 3"
field_model_opt_7_group_2 => "BMW Seria 5"Działanie skryptu:
w zmiennej typu tablica przechowuje wszystkie opcje pola
po załadowaniu strony formularza tworzy i wyświetla pole z nazwami grup (nazwę grupy ustalamy np. na podstawie 1 członu nazwy opcjii)
po wybraniu grupy pobiera z tablicy liste opcjii przypisanych do danej grupy i wkleja do pola.
Wady i zalety rozwiązania:
zaleta: gdy skrypt z jakiegoś powodu nie zadziała to wyswietlamy pole ze wszystkimi opcjami
wadą może okazać sie fakt że wszystkie wartości listy musimy przesylać w skrypcie.B.
Dzielimy opcje pola na grupy j/w. Po stronie serwera budujemy pole jako lista grup. Dodajemy do formularza skrypt który:
pobiera z serwera plik xml zawierajacy liste opcjii dla wybranej grupy
przetwarza plik xml i wkleja liste opcjii do naszego polaWady i zalety:
zaleta: nie przesyłamy wszystkich wartośći pola co pozytywnie wpływa na transfer i wydajność_______________________________________ __________________

P.S.
Pomaystruję trochę dzisiaj nad sposobem B. Sam jestem ciekaw jak to wyjdzie w praktyce.