ExtSelect
Jest to lista wyboru, której elementy definiujemy ręcznie lub za pomocą zapytania SQL. Automatycznie dobiera rozmiar, a w przypadku wielu wyborów, dołącza opcje wyszukiwania jako pole tekstowe.
Dodanie Obiektu
Poniższy fragment kodu dodaje obiekt ExtSelect do okienka dialogowego.
$obiekt = new ExtSelect($this->name.'process');
$obiekt->query = sprintf('
SELECT
p.prc_id,
p.dscrpt
FROM processes p
WHERE NOT p.is_del AND NOT p.is_fix
AND p.rspuid = %s', $data['usr_id']
);
$obiekt->update();
$this->addNext($obiekt, 'widget');
Dostępne metody
setData(array $data)
Metoda setData() umożliwia dodanie tablicy dwuwymiarowej z opcjami do pola. Tablica ta powinna być następującej struktury:
$data = [
[ 0 => 'wartość', 1 => 'etykieta']
];
addItem($k, $v)
Deklaracja pojedynczego wyboru, gdzie $k będzie identyfikatorem zapisywanym jako wartość pola, a $v zostanie wyświetlona na liście jako opis wartości.
$obiekt->addItem(0, 'NIE');
$obiekt->addItem(1, 'TAK');
Dostępne własności
query - Zapytanie SQL
Jeżeli chcemy dodać dane z zapytania SQL, to musimy przypisać kwerendę do właściwości
query, a następnie wywołać metodę update().
$obiekt->query ='SELECT prtpid, prtpnm
FROM procedures_def
WHERE NOT is_del
ORDER BY prtpnm ASC';
$obiekt->update();
multiselect
W celu umożliwienia wybrania kilku opcji należy ustawić parametr multiselect = true.
$obiekt->multiselect = true;
withDefaultItem
Dodaje automatycznie od naszej listy domyślny element, który możemy określić za pomocą @defaultItemCaption.
$obiekt->withDefaultItem = true;
$obiekt->defaultItemCaption = '--- wybierz ---';
fullItemsWidth
Wymusza zawsze pokazywanie pełnych etykiet.
$obiekt->fullItemsWidth = true;
withClearButton
Dodaje przycisk do wyczyszczenia aktualnie wybranych elementów.
$obiekt->withClearButton = true;
Łączenie addItem() i query
W przypadku użycia powyższego sposobu z zapytaniem SQL i dodania dodatkowych opcji wyboru, za pomocą metody addItem(), należy metodę update(), umieścić po przypisaniu zapytania query, ale przed metodami addItem().
Pobranie aktualnej wartości za pomocą JS
JScript::add('var value = $(\''.$obiekt->name.ExtSelect::SELECT_NAME_POSTFIX.'\').value;');
Przypisanie funkcji do zdarzenia onchange
$obiekt->onChange = 'alert(\'Zmieniono wartość na \' + $(\''.$obiekt->name.ExtSelect::SELECT_NAME_POSTFIX.'\').value);';