Allineamento DataGridView modificato con database

di il
5 risposte

Allineamento DataGridView modificato con database

Buongiorno a tutti, ho un DataGridView collegato a un DataSource. Tramite il seguente codice modifico l'ordine delle righe tramite drag&drop:

Private Sub DGV_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles DGV.MouseMove
If (e.Button And MouseButtons.Left) = MouseButtons.Left Then
If dragBoxFromMouseDown <> Rectangle.Empty AndAlso Not dragBoxFromMouseDown.Contains(e.X, e.Y) Then
Dim dropEffect As DragDropEffects = DGV.DoDragDrop(DGV.Rows(rowIndexFromMouseDown), DragDropEffects.Move)
End If
End If
End Sub

Private Sub DGV_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles DGV.MouseDown
rowIndexFromMouseDown = DGV.HitTest(e.X, e.Y).RowIndex
If rowIndexFromMouseDown <> -1 Then

Dim dragSize As Size = SystemInformation.DragSize

dragBoxFromMouseDown = New Rectangle(New Point(CInt(e.X - (dragSize.Width / 2)), CInt(e.Y - (dragSize.Height / 2))), dragSize)
Else
dragBoxFromMouseDown = Rectangle.Empty
End If
End Sub

Private Sub DGV_DragOver(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles DGV.DragOver
e.Effect = DragDropEffects.Move
End Sub

Private Sub DGV_DragDrop(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles DGV.DragDrop

Dim clientPoint As Point = DGV.PointToClient(New Point(e.X, e.Y))

rowIndexOfItemUnderMouseToDrop = DGV.HitTest(clientPoint.X, clientPoint.Y).RowIndex
If e.Effect = DragDropEffects.Move Then

Dim rowToMove As DataGridViewRow = TryCast(e.Data.GetData(GetType(DataGridViewRow)), DataGridViewRow)
Dim dt As DataTable = DS.Tables("Tabella")
Dim drArray() As Object = dt.Rows(rowToMove.Index).ItemArray
Dim dr As DataRow = dt.NewRow

dr.ItemArray = drArray
dt.Rows.RemoveAt(rowToMove.Index)
dt.Rows.InsertAt(dr, rowIndexOfItemUnderMouseToDrop)
dr.AcceptChanges()
End If
End Sub

Il tutto funziona bene solo che non riesco a salvare le righe spostate nel database.
Quindi la domanda è: come faccio a salvare le righe ordinate nel database?
Grazie.

5 Risposte

  • Re: Allineamento DataGridView modificato con database

    A cosa ti serve variare l'ordine delle righe in un data base ? se hai di queste necessità utilizza un foglio excel, non un db.
  • Re: Allineamento DataGridView modificato con database

    Salve a tutti,
    come gia' dice @patel, sia il problema che la possibile soluzione non hanno molto senso in questo "contesto"... la cosa avrebbe un senso SE, ad esempio, la riga contenesse un attributo di ordinalita', quindi "1 di n", "2 di n", "n di n", ad esempio volendo "necessariamente" ordinare un insieme secondo un attributo arbitrario... senza tale attributo le righe ritornate nella successiva proiezione saranno ordinate secondo l'ordinamento definito nella SELECT e/o riarrangiate in base all'eventuare .sort della .defaultview associata al controllo...
    salutoni omnia
    --
    Andrea
  • Re: Allineamento DataGridView modificato con database

    Il senso è che le righe vengono spostate tramite il Drag&Drop perchè poi vengono stampate in quell'ordine. Se l'utente ha la necessità di ristampare, rientrando dovrebbe spostarle nuovamente. E' per questo che vorrei salvare nel database le righe nella sequenza definita tramite il Drag&Drop. Grazie
  • Re: Allineamento DataGridView modificato con database

    Penso che tu debba salvare nel db la posizione della entry per lo specifico utente (se diversa da quella di default)
  • Re: Allineamento DataGridView modificato con database

    Come già detto non utilizzare un db access come supporto dati, meglio un csv o un file excel. In un data base vero i record non si spostano, l'ordinamento voluto si effettua in base a chiavi o campi specifici tramite select. Nel tuo caso sembra più conveniente salvare il contenuto della DGV, cosa abbastanza agevole su un csv.
Devi accedere o registrarti per scrivere nel forum
5 risposte