Hi Leute,
ich suche eine Lösung um Copy paste in einen Datagrid zu implementieren. soll sich quasi wie Excel verhalten. Wenn ich etwas aus Excel kopiere, sollte ich es genauso in den datagrid einfügen lassen. Das einzigste was bedacht werden sollte ist, dass Zeilen hinzugefügt werden sollten wenn nicht ausreichend platz vorhanden ist. Der Datagrid hängt an einem Datatable aus SQL.
Hat wer da Erfahrungen bzw. einen Code?
Ich wäre natürlich auch für andere Optionen offen, mir fiel aber derzeit keine ein, da ich es benutzerfreundlich machen möchte und die Nutzer haben keine Ahnung von SQL und auch keine Berechtigung dafür.
Ich habe bereits mal im Internet geschaut, für einen Datagridview habe ich diesen code gefunden, der wunderbar funktioniert, aber halt eben nicht für einen Datagrid. und diesen Umschreiben funktioniert meiner Meinung oder nach meinem wissenstand nicht so einfach bzw bekomme ich es nicht hin
Vielen Dank für die Hilfe.
ich suche eine Lösung um Copy paste in einen Datagrid zu implementieren. soll sich quasi wie Excel verhalten. Wenn ich etwas aus Excel kopiere, sollte ich es genauso in den datagrid einfügen lassen. Das einzigste was bedacht werden sollte ist, dass Zeilen hinzugefügt werden sollten wenn nicht ausreichend platz vorhanden ist. Der Datagrid hängt an einem Datatable aus SQL.
Hat wer da Erfahrungen bzw. einen Code?
Ich wäre natürlich auch für andere Optionen offen, mir fiel aber derzeit keine ein, da ich es benutzerfreundlich machen möchte und die Nutzer haben keine Ahnung von SQL und auch keine Berechtigung dafür.
Ich habe bereits mal im Internet geschaut, für einen Datagridview habe ich diesen code gefunden, der wunderbar funktioniert, aber halt eben nicht für einen Datagrid. und diesen Umschreiben funktioniert meiner Meinung oder nach meinem wissenstand nicht so einfach bzw bekomme ich es nicht hin
Quellcode
- Dim rowLines As String() = Clipboard.GetText(TextDataFormat.Text).Split(New String(0) {vbCr & vbLf}, StringSplitOptions.None)
- Dim currentRowIndex As Integer = (If(DGV.CurrentRow IsNot Nothing, DGV.CurrentRow.Index, 0))
- Dim currentColumnIndex As Integer = (If(DGV.CurrentCell IsNot Nothing, DGV.CurrentCell.ColumnIndex, 0))
- Dim currentColumnCount As Integer = DGV.Columns.Count
- DGV.AllowUserToAddRows = False
- For rowLine As Integer = 0 To rowLines.Length - 1
- If rowLine = rowLines.Length - 1 AndAlso String.IsNullOrEmpty(rowLines(rowLine)) Then
- Exit For
- End If
- Dim columnsData As String() = rowLines(rowLine).Split(New String(0) {vbTab}, StringSplitOptions.None)
- If (currentColumnIndex + columnsData.Length) > DGV.Columns.Count Then
- For columnCreationCounter As Integer = 0 To ((currentColumnIndex + columnsData.Length) - currentColumnCount) - 1
- If columnCreationCounter = rowLines.Length - 1 Then
- Exit For
- End If
- Next
- End If
- If DGV.Rows.Count > (currentRowIndex + rowLine) Then
- For columnsDataIndex As Integer = 0 To columnsData.Length - 1
- If currentColumnIndex + columnsDataIndex <= DGV.Columns.Count - 1 Then
- DGV.Rows(currentRowIndex + rowLine).Cells(currentColumnIndex + columnsDataIndex).Value = columnsData(columnsDataIndex)
- End If
- Next
- Else
- Dim pasteCells As String() = New String(DGV.Columns.Count - 1) {}
- For cellStartCounter As Integer = currentColumnIndex To DGV.Columns.Count - 1
- If columnsData.Length > (cellStartCounter - currentColumnIndex) Then
- pasteCells(cellStartCounter) = columnsData(cellStartCounter - currentColumnIndex)
- End If
- Next
- End If
- Next
Vielen Dank für die Hilfe.