==== 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.{{counter}} visualizzazioni.