Strumenti Utente

Strumenti Sito


sviluppo:elenco_multiselezione

Elenco MultiSelezione

Per inserire nel programma un tasto LookUp con comparsa di un Elenco Multiselezione (oltre ad aver dichiarato le varie librerie) è necessario:

1 Definire la Nostra variabile pubblica Multiselezione come Array, inizialmente vuoto:

    ...
    public $divRis = "NomeModel_divRisultato";
    public $divRic = "NomeModel_divRicerca";
    public $MultiSelNOME = array();
    ...

Ovviamente in questo esempio utilizzeremo $MultiSelNOME, ma è possibile dare un qualsiasi nome alla variabile.

2 Dichiarare la variabile nel construct,destruct e close:

construct (Dopo il try e il db):

    function __construct() {
        parent::__construct();
        try {
            ...
            $this->MultiSelNOME = App::$utente->getKey($this->nameForm . '_MultiSelNOME');
        } catch (Exception $e) {
            Out::msgStop("Errore", $e->getMessage());
            ...


destruct :

    function __destruct() {
        parent::__destruct();
        App::$utente->setKey($this->nameForm . '_MultiSelNOME', $this->MultiSelNOME);
    }


close:

    public function close() {
        App::$utente->removeKey($this->nameForm . '_MultiSelNOME');
        Out::closeDialog($this->nameForm);
    }

3 Al click del butt è necessario aggiungere un return:

case 'returnNome':
                $this->MultiSelNOME = array();
                if ($_POST['retKey']) {
                    $this->MultiSelNOME = explode(",", $_POST['retKey']);
                }
                break;

4 Aggiungere nella Ric l'opzine Multiselect, quindi Modificandola da così:

static function PREFISSORicNOME($returnModel, $returnEvent) {
        $sql = "SELECT ROWID, CAMPOCOD, CAMPODES FROM NOMETABELLA";
        $model = 'utiRicDiag';
        $gridOptions = array(
            "Caption" => 'Titolo dell'elenco',
            "width" => '330',
            "height" => '400',
            "sortname" => 'CAMPOCOD/CAMPODES',
            "rowNum" => '20',
            "rowList" => '[]',
            "colNames" => array(
                "Codice",
                "Descrizione"
            ),
            "colModel" => array(
                array("name" => 'CAMPOCOD', "width" => 60),
                array("name" => 'CAMPODES', "width" => 260)
            ),
            "dataSource" => array(
                'sqlDB' => 'DB',
                'sqlQuery' => $sql
            )
        );
        $_POST = array();
        $_POST['event'] = 'openform';
        $_POST['gridOptions'] = $gridOptions;
        $_POST['returnModel'] = $returnModel;
        $_POST['returnEvent'] = $returnEvent;
        $_POST['retid'] = $returnId;
        $_POST['returnKey'] = 'retKey';
        itaLib::openForm($model, true, true, 'desktopBody', $returnModel);
        $appRoute = App::getPath('appRoute.' . substr($model, 0, 3));
        require_once App::getConf('modelBackEnd.php') . '/' . $appRoute . '/' . $model . '.php';
        $model();
    }

a così:

static function timRicDip($returnModel, $returnEvent, $multiSelect = false) {
        $rowNum = 20;
        if ($multiSelect == 'true') {
            $rowNum = 10000;
        }
        $sql = "SELECT ROWID, CAMPOCOD, CAMPODES FROM NOMETABELLA";
        $model = 'utiRicDiag';
        $gridOptions = array(
            "Caption" => 'Elenco ',
            "width" => '330',
            "height" => '400',
            "sortname" => 'CAMPOCOD/CAMPODES',
            "rowNum" => $rowNum,
            "multiselect" => $multiSelect,
            "rowList" => '[]',
            "colNames" => array(
                "Codice",
                "Descrizione",
            ),
            "colModel" => array(
                array("name" => 'CAMPOCOD', "width" => 60),
                array("name" => 'CAMPODES', "width" => 260)
            ),
            "dataSource" => array(
                'sqlDB' => 'DB',
                'sqlQuery' => $sql
            )
        );
        $_POST = array();
        $_POST['event'] = 'openform';
        $_POST['gridOptions'] = $gridOptions;
        $_POST['returnModel'] = $returnModel;
        $_POST['returnEvent'] = $returnEvent;
        $_POST['retid'] = $returnId;
        $_POST['returnKey'] = 'retKey';
        itaLib::openForm($model, true, true, 'desktopBody', $returnModel);
        $appRoute = App::getPath('appRoute.' . substr($model, 0, 3));
        require_once App::getConf('modelBackEnd.php') . '/' . $appRoute . '/' . $model . '.php';
        $model();
    }

Dove Abbiamo Modificato:

  • I Valori che passiamo alla funzione, è stata aggiunta la $multiselect, che se vuota viene settata a 'false'
  • Abbiamo aggiunto una condizione per verificare se si sta effettuando una multiselezione o meno, perchè allora dovranno essere visualizzate tutte le righe in un solo elenco.
  • Aggiunto “multiselect” ⇒ $multiSelect, tra le opzioni della grid ( $gridOptions = array(… )

5 Ovviamente nel richiamo della funzione, nel programma, oltre a passare il $returnModel, $returnEvent passeremo $multiSelect = true per indicare una multiselezioni, altrimenti nulla.

Nota.
Se nella multiselect il primo valore torna automaticamente selezionato la gridOptions “multiselect”⇒true deve essere modificata in “multiselect”⇒'true', tra apici.

sviluppo/elenco_multiselezione.txt · Ultima modifica: 2018/03/19 10:45 da 127.0.0.1