sviluppo:multiselectmultipage
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
sviluppo:multiselectmultipage [2013/02/20 16:39] – a.mucci | sviluppo:multiselectmultipage [2024/10/15 09:45] (versione attuale) – modifica esterna 127.0.0.1 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
===== Multiselezione con più pagine ===== | ===== Multiselezione con più pagine ===== | ||
Una Griglia Multiselect serve per rendere selezionabili più di una Riga alla volta.\\ | 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/ | + | E' possibile però che capiti di avere una Griglia con molte righe e che ciò renda i tempi di creazione/ |
+ | 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// | ||
- | === MultiSelectPost | + | === MultiSelezionePost |
Con questa funzione potremo: | Con questa funzione potremo: | ||
- | * tenere memorizzate | + | * memorizzare |
* visualizzare in ogni pagina le righe già selezionate | * visualizzare in ogni pagina le righe già selezionate | ||
* deselezionare le righe | * 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: | + | 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: | Le dichiariamo: | ||
< | < | ||
Linea 45: | Linea 47: | ||
} | } | ||
</ | </ | ||
+ | \\ | ||
+ | Dopo di che chiamiamo la funzione nel** onClickTablePager** : | ||
+ | < | ||
+ | ... | ||
+ | $sql = $this-> | ||
+ | $this-> | ||
+ | ... | ||
+ | </ | ||
+ | \\ | ||
+ | Notiamo:\\ | ||
+ | * L' | ||
+ | * L' | ||
+ | * Il richiamo della funzione **MultiSelezionePost** con l' | ||
+ | * $this-> | ||
+ | * $this-> | ||
+ | * $sql: la stessa sql che utilizziamo per creare la griglia, in modo che la funzione che stiamo chiamando si scorra gli stessi campi e possa controllare i ROWID selezionati.\\ In questo caso noi utilizziamo un SELECT * FROM DITTELIC | ||
+ | * La funzione è stata inserita direttamente nella Lib. | ||
- | + | **La funzione:**\\ | |
- | La funzione:\\ | + | |
< | < | ||
public function MultiSelezionePost($SelezioneTab, | public function MultiSelezionePost($SelezioneTab, | ||
- | | + | $Riga=' |
+ | // PRIMA PARTE | ||
foreach ($SelezioneTab as $key => $Result_rec) { | foreach ($SelezioneTab as $key => $Result_rec) { | ||
- | if($_POST[' | + | if($_POST[$Riga.$key] == ' |
- | | + | |
| | ||
}else{ | }else{ | ||
- | | + | |
- | $_POST[' | + | $_POST[$Riga.$key]=' |
} | } | ||
} | } | ||
} | } | ||
- | | + | // SECONDA PARTE |
- | $Griglia_tab=ItaDB:: | + | |
foreach ($Griglia_tab as $Griglia_rec) { | foreach ($Griglia_tab as $Griglia_rec) { | ||
- | if( $_POST[' | + | if( $_POST[$Riga.$Griglia_rec[' |
- | $NuovoConto[$Griglia_rec[' | + | $NuovaSelezione[$Griglia_rec[' |
- | Out:: | + | Out:: |
}else { | }else { | ||
if($SelezioneTab[$Griglia_rec[' | if($SelezioneTab[$Griglia_rec[' | ||
- | $NuovoConto[$Griglia_rec[' | + | $NuovaSelezione[$Griglia_rec[' |
} | } | ||
} | } | ||
} | } | ||
- | | + | |
- | | + | |
} | } | ||
</ | </ | ||
- | Possiamo notare: | + | **La prima parte** della funzione invia in **POST** anche le **row** selezionate nella pagina precedente (ovviamente se è la prima pagina non verrà eseguita) |
- | **$SelezioneTab, | + | |
- | - **$SelezioneTab: | + | Notiamo: |
- | | + | |
+ | | ||
+ | * **$Griglia: | ||
+ | * **$sql:** SELECT * FROM DITTELIC | ||
+ | * **jqg_' | ||
+ | \\ | ||
+ | **Nella seconda parte** della funzione: | ||
+ | * viene creato | ||
+ | * Se ci sono vengono aggiunte all' | ||
+ | * Se non ci sono, controlla se tra le righe nella pagina sono presenti righe precedentemente selezionate (Quindi presenti in **$SelezioneTab**) e le assegna a 0. In questo modo non risulteranno più selezionate. | ||
+ | * In fine avremo il return di **$NuovaSelezione** | ||
+ | |||
+ | Nel nostro programma avremo quindi la variabile in session $this-> | ||
+ | \\ | ||
+ | \\ | ||
+ | **Nota**\\ | ||
+ | \\ | ||
+ | Con questa funzione è possibile selezionare oltre 2000 righe, ma nel caso in cui ce ne siano di più è opportuno inserire un bottone che permetta di stamparle direttamente tutte e inserire dei filtri nella ricerca( in modo da // | ||
+ | \\ | ||
+ | Per l' | ||
+ | < | ||
+ | | ||
+ | $SelezioneGrid[]=$key; | ||
+ | | ||
+ | |||
+ | $sql=" SELECT * | ||
+ | FROM DITTELIC | ||
+ | WHERE 1"; | ||
+ | $sql.=" | ||
+ | for ($index = 0; $index < count($SelezioneGrid); | ||
+ | | ||
+ | } | ||
+ | $sql=substr($sql, | ||
+ | $sql.=" | ||
+ | </ | ||
+ | **$SelezioneTab** è l' | ||
+ | \\ | ||
+ | Ovviamente, se vogliamo passare una **$SelezioneTab** aggiornata, prima del ciclo, dovremo richiamare nuovamente la funzione **MultiSelectPost**, | ||
+ | < | ||
+ | ... | ||
+ | $sql = $this-> | ||
+ | $this-> | ||
+ | ... | ||
+ | </ | ||
+ | \\ | ||
+ | Con il ciclo, rielaboriamo l' | ||
+ | Dopo di che, in questo esempio, all' | ||
+ | Avremo un risultato del genere:\\ | ||
+ | \\ | ||
+ | SELECT * FROM DITTELIC WHERE 1 AND( ROWID = 2 OR ROWID = 3 OR ROWID = 35 ) | ||
+ | \\ | ||
+ | {{counter}} visualizzazioni. |
sviluppo/multiselectmultipage.1361378368.txt.gz · Ultima modifica: 2018/03/19 10:45 (modifica esterna)