Strumenti Utente

Strumenti Sito


sviluppo:readerid

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
sviluppo:readerid [2013/01/17 16:21] a.muccisviluppo:readerid [2018/03/19 10:45] (versione attuale) – modifica esterna 127.0.0.1
Linea 18: Linea 18:
 \\ \\
  
-Ma se per qualche motivo nella griglia si vuole utilizzare un Indice differente dall'indice definito nella tabella sarà necessario definire un ReaderId :+Se nella griglia si vuole utilizzare un Indice differente dall'indice definito nella tabella sarà necessario definire un ReaderId :
  
   * 1) Nel model della grid inserire l'attributo: **readerId:'Key'**    * 1) Nel model della grid inserire l'attributo: **readerId:'Key'** 
Linea 25: Linea 25:
 Esempio: Esempio:
 ^  Nome Attributo  ^  Valore Attributo  ^ ^  Nome Attributo  ^  Valore Attributo  ^
-|  class  |  {cellEdit:false, readerId:'Key', caption: "Ditta", shrinkToFit:true, width:650 .....  |+|  class  |  {cellEdit:false, readerId:'KEY', caption: "Ditta", shrinkToFit:true, width:650 .....  |
 \\ \\
  
-  *  2) Nell'applicazione, al momento della creazione della griglia, dovremo aggiungere all'array della grid il 'rowIndex'=>'Key', per specificare quale sarà l'indice che dovrà utilizzare:+  *  2) Nel programma, al momento della creazione della griglia, dovremo aggiungere all'array  il 'rowIndex'=>'Key',(Sempre utilizzando la stessa Key definita nel Model) per specificare quale sarà l'indice che dovrà utilizzare:
 <code> <code>
                        $sql=$this->CreaSql();                        $sql=$this->CreaSql();
Linea 35: Linea 35:
                                         'sqlDB' =>  $this->DITTA_DB,                                         'sqlDB' =>  $this->DITTA_DB,
                                         'sqlQuery' => $sql,                                         'sqlQuery' => $sql,
-                                        'rowIndex' => 'Key'));+                                        'rowIndex' => 'KEY'));
                         $ita_grid01->setPageNum(1);                         $ita_grid01->setPageNum(1);
                         $ita_grid01->setPageRows(20000);                         $ita_grid01->setPageRows(20000);
Linea 42: Linea 42:
                         ....                         ....
 </code> </code>
 +\\
 +Se nella select quindi specificheremo ad esempio:\\
 +                 SELECT *,CODICEDIPENDENTE AS KEY FROM DIPENDENTI
  
 +Avremo come indice il Codice del Dipendente.
 +\\
 +\\
 ---- ----
 +\\
 + == Elabora Record ==
 +\\
  
-Nel Caso in cui vogliamo Elaborare il risultato della nostra tabella per un qualsiasi motivo, come ad esempio l'ottenere il nome di un Dipendente che ha assenze superiori a 10 evidenziato in rosso, o una qualsiasi altro tipo di rielaborazione del risultato nella griglia, possiamo ricorrere alla Funzione "Elabora Record".\\ +Nel Caso in cui vogliamo Elaborare il risultato della nostra tabella per un qualsiasi motivo, come ad esempio l'evidenziare in rosso il numero di telefono di un dipendente e in verde quello di cellulare, o una qualsiasi altro tipo di rielaborazione, possiamo ricorrere alla Funzione "Elabora Record".\\ 
-Questo tipo di funzione ci permette di **Rielaborare** l'Output che otterremo nelle celle della griglia, come questo:\\ +Questo tipo di funzione ci permette di **Rielaborare** l'Output che otterremo:\\ 
-|  {{ :sviluppo:tabelaborata.jpg?400 |}}  | +|  {{ :sviluppo:tabelaborata.jpg?600 |}}  | 
 +\\ 
 +Per ottenere un'elaborazione di record dovremo:\\
 \\ \\
-Nel caso in cui la SELECT preveda una JOIN con più tabelle e non si ha la possibilità di selezionare un determinato indice da una TABELLA sarà necessario ricorre ad un ReaderId  +  * 1) Creare la Funzione di rielaborazione:
  
 +<code>
  
 +function elaboraRecords($Result_tab) {
 +        foreach ($Result_tab as $key => $Result_rec) {
 +            $Result_tab[$key]['TELEFONO'] ="<p style = 'background-color:#FF00FF;'>".$Result_tab[$key]['TELEFONO']."</p>";
 +            $Result_tab[$key]['CELLULARE'] = "<p style = 'background-color:#008800;'>".$Result_tab[$key]['CELLULARE']."</p>";
 +        }
 +        return $Result_tab;
 +    }
 +</code>
 +\\
 +In questa funzioene viene passato l'array con il risultato della Querry: "SELECT * FROM DIPENDENT" e assegna ad ogni campo Telefono o Cellulare del record uno sfondo Rosso o Verde.\\
  
  
 +  * 2) Al momento della creazione della tabella, richiamiamo la funzione appena creata:
  
 +<code>
 +                       $sql="SELECT * FROM DIPENDENTI";
 +                        $ita_grid01 = new TableView($this->gridDitte,
 +                                array(
 +                                        'sqlDB' =>  $this->DITTA_DB,
 +                                        'sqlQuery' => $sql,
 +                                        'rowIndex' => 'Key'));
 +                        $ita_grid01->setPageNum(1);
 +                        $ita_grid01->setPageRows(20000);
 +                        $ita_grid01->setSortIndex('COGNOME');
 +                        $ita_grid01->setSortOrder('asc');
 +                        // Elabora il risultato
 +                        $Result_tab = $ita_grid01->getDataArray();
 +                        $Result_tab = $this->elaboraRecords($Result_tab);
 +                        $ita_grid01->getDataPageFromArray('json', $Result_tab)
 +                        
 +</code>
 \\ \\
 +E come possiamo notare la griglia viene creata utilizzando l'Array Rielaborato: $ita_grid01->getDataPageFromArray('json', $Result_tab).
 +\\
 +\\
 +\\
 +-----
 +\\
 +\\
 +\\
 +Nel caso in cui la SELECT preveda una JOIN con più tabelle e non si ha la possibilità di selezionare un determinato indice da una TABELLA sarà necessario ricorre ad un Funzione Elabora Record e alla creazione di un ReaderId composto da più Campi.\\
 +Questa funzione è necessaria sopratutto con una JOIN di più tabelle, perchè non sempre è possibile selezionare un solo campo:\\
 +\\
 +Immaginiamo di avere 2 tabelle: ANAGRAFICA_SOGGETTO e ANAGRAFICA_IMMOBILE e che entrambe racchiudono tanti campi anagrafici importanti,troppi per essere selezionati uno ad uno. La soluzione più semplice sarebbe:\\
 +               SELECT * FROM ANAGRAFICA_SOGGETTO JOIN ANAGRAFICA_IMMOBILE ON ANAGRAFICA_SOGGETTO.CODICE = ANAGRAFICA_IMMOBILE.CODICESOGGETTO
  
-Se invece si vuole creare un ROWID che racchiuda più campisemplicemente non riusciamo a farci tornare un determinato rowidè necessario+Come detto in precedenza la griglia prende automaticamente l'indice della tabella se si prendono tutti i campi presenti comunque si seleziona anch'essoma nel caso di una JOIN (in cui si prendono tutti i campi da entrambe) l'indice della griglia viene assegnato automaticamente in ordine crescente, perchè nessuno dei 2 indici ha la priorità sull'altro.\\ 
- +Per risolvere questo conflitto di Indici, possiamo pertanto ricorrere alla creazione di un ReaderId Composto
-  * Nell'applicazione, al momento della creazione della grid, dovremo rielaborare il risultato della querry e passare alla tabella un Array. +Dovremo ,quindi, nell'applicazione, al momento della creazione della grid, rielaborare il risultato della querry e passare alla tabella un Array. 
 +\\ 
 +\\ 
 +**Esempio Guidato:**\\
 \\ \\
-Esempio:\\ 
 In una tabella abbiamo: In una tabella abbiamo:
 TABELLA: OPERAI JOIN PRODUZIONI TABELLA: OPERAI JOIN PRODUZIONI
Linea 86: Linea 138:
 | 004  |  Verdi  | Rosa  | | 004  |  Verdi  | Rosa  |
 \\ \\
-Vogliamo che al doppioclick su una riga vengano elencati tutti i prodotti creati di quel operaio a quella data, portandoci dietro la data e codice del dipendente. +Vogliamo che all'evento dbClickRow  vengano elencati tutti i prodotti creati da quel operaio a quella data, impostando come readerId un indice composto dalla data e codice del dipendente.\\ 
 +\\ 
 +Procedimento:\\  
 +\\
 Dopo aver aggiunto nella gird del model il **ReaderId**  e nell'applicazione il **'rowIndex' => 'Key'** (come sopra descritto), nel programma dovremo anche provvedere alla Rielaborazione del risultato della Querry.\\ Dopo aver aggiunto nella gird del model il **ReaderId**  e nell'applicazione il **'rowIndex' => 'Key'** (come sopra descritto), nel programma dovremo anche provvedere alla Rielaborazione del risultato della Querry.\\
-Questa rielaborazione la possiamo fare tramite una funzione: +Questa rielaborazione può essere fatta sempre attraverso la funzione **ElaboraRecords** :\\
- +
-<code> +
-                       $sql=$this->CreaSql(); +
-                        $ita_grid01 = new TableView($this->gridDitte, +
-                                array( +
-                                        'sqlDB' =>  $this->DITTA_DB, +
-                                        'sqlQuery' => $sql, +
-                                        'rowIndex' => 'Key')); +
-                        $ita_grid01->setPageNum(1); +
-                        $ita_grid01->setPageRows(20000); +
-                        $ita_grid01->setSortIndex('COGNOME'); +
-                        $ita_grid01->setSortOrder('asc'); +
-                        // Elabora il risultato +
-                        $Result_tab = $ita_grid01->getDataArray(); +
-                        $Result_tab = $this->elaboraRecords($Result_tab); +
-                        $ita_grid01->getDataPageFromArray('json', $Result_tab) +
-</code> +
- +
-La funzione **elaboraRecords**.  +
-In questa funzione provvederemo a rielaborare il nostro nuovo Rowid: 'Key' componendolo di "CODICEDIPENDENTE" - "DATA", in che quando faremo doppio click sulla riga selezionata il nostro rowid torni ad esempio"001-20130122"+
 <code> <code>
   function elaboraRecords($Result_tab) {   function elaboraRecords($Result_tab) {
Linea 122: Linea 155:
 </code> </code>
  
-Al doppio click per ottenere i dati che ci servono dal rowid potremo utilizzare la funzione: explode: +\\ 
-L'explode ci restituirà quindi un array con le 2 chiavi che ci servono:+Come possiamo notare il nostro Indice 'Key' viene composto da "CODICEDIPENDENTE" - "DATA", in modo che al dbClickRow il rowid ci torni così: "001-20130122".\\ 
 +\\ 
 +Dopo di che, per poter utilizzare questo **Indice Composto**, all'evento dbClickRow possiamo utilizzare la funzione: explode:\\ 
 <code> <code>
  switch ($_POST['id']) {  switch ($_POST['id']) {
Linea 144: Linea 180:
                 break;                 break;
 </code> </code>
 +L'explode ci restituirà quindi un array con le 2 chiavi che ci servono e come nell'esempio potremo utilizzarle nella SELECT per estrarre solo ciò che ci serve.
  
sviluppo/readerid.1358439713.txt.gz · Ultima modifica: 2018/03/19 10:45 (modifica esterna)