Dalla versione 2023.02.05 utilizzando codice Javascript è possibile utilizzare il drag and drop sull’oggetto Griglia con NuovoLayout=True per consentire all’utente di creare spostare righe da una griglia all’altra, o all’interno delle griglie figlie di una griglia principale.
ESEMPIO 1: SPOSTAMENTO DI RIGHE DA GRIGLIE FIGLIE DI UNA STESSA GRIGLIA
Per consentire lo spostamento di righe fra le griglie figlie di una stessa griglia, è necessario fare quanto segue:
1) Sulla griglia figlia (Grid3 nell’esempio che segue), assegnare la proprietà ConsentiTrascinamento a True.
2) Nell’EventoRenderClient definire la funzione externalDrop griglia madre (Grid2 nell’esempio che segue), in questo modo:
$('#<Grid2>').externalDrop( function(targetRowData,droppedRowData) { var oldChiaveMadre=droppedRowData[0].CUSTOM1 var newChiaveMadre=targetRowData.CUSTOM1 var chiaveFiglia=droppedRowData[0].CUSTOM2 $('#<DragDropRiga>').ServerExecute(oldChiaveMadre,newChiaveMadre,chiaveFiglia) $('#<Grid2>').expandChildGrid() } )
Come si può notare, la funzione externalDrop accetta due parametri:
- targetRowData: contiene i dati della riga trascinata
- droppedRowData: contiene un array con i dati delle righe trascinate (che potrebbero essere più di una)
Nell’esempio, il campo CUSTOM1 contiene il campo che collega la griglia madre alle figlie, mentre CUSTOM2 è la chiave primaria delle righe nella griglia figlia.
3) La funzione externalDrop chiama l’EventoEsegui lato server di un oggetto procedura che esegue lo spostamento della riga riassegnandone il campo CUSTOM1. All’evento vengono passati tre parametri, il cui significato è spiegato nell’esempio di codice seguente.
dim oldChiaveMadre as String = Parameter1 ' chiave della riga madre cui appartiene attualmente la riga trascinata dim newChiaveMadre as String = Parameter2 ' chiave della riga madre su cui è stata trascinata dim chiaveFiglia as string = Parameter3 ' chiave della riga trascinata form.FindControl("Grid3").filterRows("") form.FindControl("Grid3").MoveFirst() if form.FindControl("Grid3").LocateRow("CUSTOM1='"+sqlstr(oldChiaveMadre)+"' and CUSTOM2='"+sqlStr(chiaveFiglia)+"'") form.FindControl("Grid3").AssignField("CUSTOM1",newChiaveMadre) form.FindControl("Grid3").SaveRow() form.FindControl("Grid3").Refresh() form.FindControl("Grid3").LocateRow("CUSTOM1='"+sqlstr(newChiaveMadre)+"' and CUSTOM2='"+sqlStr(chiaveFiglia)+"'") End If