Elenco MultiSelezione

Per inserire nel programma un tasto LockUp 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): <code> function construct() { parent::construct(); try { … $this→MultiSelNOME = App::$utente→getKey($this→nameForm . '_MultiSelNOME'); } catch (Exception $e) { Out::msgStop(“Errore”, $e→getMessage()); … </code>
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(… )