Multiselezione con più pagine

Una Griglia Multiselect serve per rendere selezionabili più di una Riga alla volta.
E' possibile però che capiti di avere una Griglia con molte righe e che ciò renda i tempi di creazione/aggiornamento della tabella molto lunghi. Il problema può essere risolto utilizzando una Multiselect con più Pagine, ma dato che non è ancra implementato un sistema di cattura delle righe precedentemete selezionate dovremo utilizzare la funzione MultiSelectPost

MultiSelectPost

Con questa funzione potremo: - tenere memorizzate tutte le righe precedentemente selezionate. - visualizzare in ogni pagina le righe già selezionate - deselezionare le righe
Per poter utilizzare questa funzione avremo bisogno prima di tutto di una variabile in Session che conterrà tutte le righe precedentemente selezionate e il nome della griglia: Le dichiariamo:

..
public $gridLicenze = "gfmConLicenze_gridLicenze";
public $SelezioneTab = array();
..

Nel construct:

function __construct() {
parent::__construct();
try {
$this->GAFIERE_DB = ItaDB::DBOpen('GAFIERE');
$this->SelezioneTab = App::$utente->getKey($this->nameForm . '_SelezioneTab');
...

Nel destruct:

function __destruct() {
parent::__destruct();
if ($this->close != true) {
App::$utente->setKey($this->nameForm . '_SelezioneTab', $this->SelezioneTab);
...

Nel close:

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

La funzione:

public function MultiSelezionePost($SelezioneTab,$Griglia,$sql){
// Invia in POST le row selezionate nella pagina precedente
foreach ($SelezioneTab as $key => $Result_rec) {
if($_POST['jqg_'.$Griglia.'_'.$key] == '0'){
$_POST['jqg_'.$Griglia.'_'.$key] = '0';
$SelezioneTab[$key ] = '0';
}else{
if(!Out::valore('jqg_'.$Griglia.'_'.$key,'1')){
$_POST['jqg_'.$Griglia.'_'.$key]='1';
}
}
}
//Si riscorre tutte le righe e quelle che trova controlla.
$Griglia_tab=ItaDB::DBSQLSelect($this->getDATABASE(),$sql, true);
foreach ($Griglia_tab as $Griglia_rec) {
if( $_POST['jqg_'.$Griglia.'_'.$Griglia_rec['ROWID']] == '1'){
$NuovoConto[$Griglia_rec['ROWID']]='1';
Out::valore('jqg_'.$Griglia.'_'.$Griglia_rec['ROWID'],'1');
}else {
if($SelezioneTab[$Griglia_rec['ROWID']] == '1'){
$NuovoConto[$Griglia_rec['ROWID']]='0';
}
}
}
$SelezioneTab = $NuovoConto;
return $SelezioneTab;
}

Possiamo notare: $SelezioneTab,$Griglia,$sql
- $SelezioneTab: Rappresenta l'array che contiene tutte le righe selezionate. -