# XGrid e Varianti MVC

Usa questa reference quando il task coinvolge un elenco con xgrid o una migrazione tra varianti manager.

## Routing rapido

- `MVC3`: xgrid gestita nella pagina/manager legacy.
- `MVC3_XGRID`: usa il manager centralizzato per la ricerca xgrid.
- `MVC4`: continua a usare la gestione centralizzata, ma con regole `visible`, configurabilita' e struttura pagina proprie di `mvc4`.

## Template locali da usare

- caso xgrid legacy / `mvc3`: `../templates/mvc3/cruscotto.cfc`
- caso xgrid `mvc4`: `../templates/mvc4/elegrid.cfc`

## Regole che non vanno saltate

- In `MVC4` e `MVC3_XGRID` va impostato `pk_ids` in `getXGridConfig`.
- In `MVC3` e precedenti va passato `row_id` a `create_xgrid_*`.
- La lista chiave deve identificare in modo univoco ogni riga, altrimenti il render puo perdere record.
- Definire almeno un campo risultati, altrimenti la pagina non funziona.

## Differenze operative principali

### MVC3

- Se usi ricerca Ajax, definisci la funzione JS richiamata da `ajaxSearchFunction`.
- La serializzazione xgrid passa dai metodi `create_xgrid_file_string` / `create_xgrid_json`.
- Visibilita' lato manager: `visible_condition` e `draw_condition`.

### MVC3_XGRID

- Non definire la ricerca JS custom della xgrid: la ricerca e' gestita centralmente.
- Definire la sola funzione ColdFusion `process_ricerca{id sezione}`.
- Continuano a valere le regole xgrid centralizzate su `pk_ids`.

### MVC4

- Per la visibilita' usare `visible.field` e `visible.data`.
- Per `btn` e `icon` usare `id_condition` per variare il contenuto per riga.
- I campi editabili richiedono `data.operation="edit"` e, se condizionati, `data.edit_condition`.

## Migrazione verso gestione centralizzata

- Classificare prima la pagina: `MVC3`, `MVC3_XGRID` oppure `MVC4`.
- Per la migrazione a `mvc4`, partire dal template `elegrid.cfc` locale.
- Portare nella nuova struttura solo configurazioni e logiche necessarie.
- Trattare con attenzione:
  - rinomina/rimozione metodi xgrid obsoleti;
  - larghezza colonne;
  - sottoelenchi;
  - editabilita' riga per riga;
  - cookie / stato utente se presenti.

## Casi ricorrenti da verificare

- `manageNewRow` per elenchi editabili a un solo livello;
- sottoelenco con `hasSubgrid=true` e metodi `*2`;
- `visible` / `id_condition` dopo migrazione `mvc4`;
- `btnrowmgmt` per gestione riga;
- export standard, ordinamento e altezza griglia se il caso li usa.

## Verifiche minime

- chiave riga coerente (`pk_ids` o `row_id`);
- nessuna regressione su ricerca, paginazione, larghezza e righe editabili;
- xgrid caricata senza errori nei log `cfajax` / applicativi;
- se la modifica tocca UI o submit, passare a browser validation.
