| |
VB.NET - Ein- und UmsteigerRow in DataGridView verschieben? | | | Autor: Christoph1972 | Datum: 13.03.08 21:49 |
| Hi Leute,
ich versuche gerade raus zu finden, wie man ein Row in einem DataGridView verschiebt. Die Columns kann man ja verschieben, wenn man es in den Propertys AlowUserToOrderColumns einstellt. Mit einem Row geht das scheinbar nicht, warum auch immer, oder bin ich blind? Muss ich etwa eine Drag and Drop Funktion coden, mit der ich die Rows moven kann? Hat hier jemand eine Idee, wie ich das am Besten realisieren kann? Ach ja, das DGV ist nicht gebunden, der Inhalt wird später in eine Datei gestreamt. Es soll also ein reiner Sortiervorgang werden, nicht mehr und nicht weniger
Gruß
Christoph
Gruß
Christoph
| |
Re: Row in DataGridView verschieben? | | | Autor: bauer | Datum: 14.03.08 08:40 |
| Hi Christoph,
so ein Problem hatte ich auch mal, sprich einen Sort auf eine ungebundenes DataGridView.
Sah dann in etwa so aus (abgesehen davon, daß es sicher performantere Algorithmen gibt (Heapsort ......)).
''' <summary>
''' Eigentliche Sort Methode
''' </summary>
''' <param name="m_grid"></param>
''' <param name="FromRow"></param>
''' <param name="ToRow"></param>
''' <param name="SortKeys"></param>
''' <remarks></remarks>
Private Shared Sub SortWithoutDialogDoIt(ByVal m_grid As _
System.Windows.Forms.DataGridView _
, ByVal FromRow As Integer _
, ByVal ToRow As Integer _
, ByVal SortKeys As List(Of SortColumn))
'Lokale Hilfsgroessen fuer vertauschen von zwei Rows im
' DataGridView
Dim R1 As DataGridViewRow = Nothing
Dim R2 As DataGridViewRow = Nothing
'Plausipruefungen und Ausfuehren der Sortierung
If (SortKeys.Count > 0) And (FromRow < ToRow) Then
For i As Integer = FromRow To ToRow - 1
For j As Integer = i + 1 To ToRow
If SwapNecessary(m_grid, i, j, SortKeys, 0) = True _
Then
'Vertausche zwei ROWs gegeneinander
R1 = m_grid.Rows(i)
R2 = m_grid.Rows(j)
m_grid.Rows.RemoveAt(j)
m_grid.Rows.RemoveAt(i)
m_grid.Rows.Insert(i, R2)
m_grid.Rows.Insert(j, R1)
Else
End If
Next
Next
Else
'Keine Sortierungskeys verfuegbar bzw. FromRow / ToRow
' ungueltig
End If
End Sub gruß bauer | |
Re: Row in DataGridView verschieben? | | | Autor: Melkor | Datum: 14.03.08 13:53 |
| So kann der Benutzer Rows verschieben, wenn du das willst (.AllowDrop = True!)
Private mdrect As Rectangle
Private mdindex As Integer
Private Sub dgv_DragEnter(ByVal sender As Object, ByVal e As _
System.Windows.Forms.DragEventArgs) Handles dgv.DragEnter
e.Effect = DragDropEffects.Move
End Sub
Private Sub dgv_MouseMove(ByVal sender As Object, ByVal e As _
MouseEventArgs) Handles dgv.MouseMove
If e.Button And MouseButtons.Left = MouseButtons.Left Then
If mdrect <> Rectangle.Empty AndAlso Not mdrect.Contains(e.X, _
e.Y) Then
Dim rtd As DataGridViewRow = dgv.Rows(mdindex)
Debug.WriteLine("Row to drag " & rtd.Cells(0).ToString())
Dim dropEffect As DragDropEffects = dgv.DoDragDrop(rtd, _
DragDropEffects.Move)
End If
End If
End Sub
Private Sub dgv_MouseDown(ByVal sender As Object, ByVal e As _
MouseEventArgs) Handles dgv.MouseDown
mdindex = dgv.HitTest(e.X, e.Y).RowIndex
If mdindex <> -1 Then
Dim ds As Size = SystemInformation.DragSize
mdrect = New Rectangle(New Point(e.X - (ds.Width / 2), e.Y - ( _
ds.Height / 2)), ds)
Else
mdrect = Rectangle.Empty
End If
End Sub
Private Sub dgv_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) _
Handles dgv.DragDrop
Dim cp As Point = dgv.PointToClient(New Point(e.X, e.Y))
Dim dropindex As Integer = dgv.HitTest(cp.X, cp.Y).RowIndex()
If e.Effect = DragDropEffects.Move Then
Dim rtm As DataGridViewRow = CType(e.Data.GetData(GetType( _
DataGridViewRow)), DataGridViewRow)
dgv.Rows.RemoveAt(mdindex)
dgv.Rows.Insert(dropindex, rtm)
End If
End Sub Those people who think they know everything are a great annoyance to those of us who do - Isaac Asimov | |
Re: Row in DataGridView verschieben? | | | Autor: Melkor | Datum: 15.03.08 13:10 |
| Naja, den Code hatte ich auch ursprünglich (als C# glaube ich) von irgendwoher.
Those people who think they know everything are a great annoyance to those of us who do - Isaac Asimov | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|