| |
VB.NET - Ein- und UmsteigerDataGridView neue Zeile erstellen | | | Autor: ringaila | Datum: 06.05.17 16:37 |
| Hallo,
ich würde gerne in einem DatenGrid per (strg u. +) eine neue Zeile erstellen bzw. mit (strg u. Entf) eine Zeile löschen können. Hat jemand eine Idee wie das funktioniert ?
Und ich suche eine Möglichkeit wie ich in der Row zeile (ganz Vorne) die Zeilennummer hineinbekomme. Soll dann beim hinzufügen der neuen Zeile autoatisch die Zeilennummer ergänzen. | |
Re: DataGridView neue Zeile erstellen | | | Autor: Manfred X | Datum: 06.05.17 17:04 |
| Hallo!
Was verstehst Du unter einem DatenGrid? Welches Control?
WPF? Windows.Forms? Was anderes?
Verwendest Du bei dem Control Datenbindung?
Was ist mit Zeilennummer gemeint?
Soll diese Nummer Bestandteil der Daten sein (also z.B. beim
Sortieren mitlaufen, beim Löschen erhalten bleiben)
oder soll es die Indexnummer im Grid sein - ohne festen Datenbezug?
Wie soll die neue Zeilennummer vergeben werden?
- stets 1 größer als das bisherige Maximum der Nummern
- oder die niedrigste frei verfügbare Nummer (nach Löschung von Sätzen)? | |
Re: DataGridView neue Zeile erstellen | | | Autor: ringaila | Datum: 06.05.17 18:17 |
| Wow, so viele Frage. Ich hoffe ich verstehe alles richtig
Ich meine mit DatenGrid DataGridView und verwende Windows.Forms
Datenbindung verwende ich keine, möchte ja die Daten selber eintragen.
Die Nummer soll nicht Bestandteil der Daten sein. Beim löschen soll die ganze Zeile gelöscht werden, somit auch nicht erhalten bleiben.
So wie du schon schreibst, stets 1 größer als das bisherige Maximum der Nummern | |
Re: DataGridView neue Zeile erstellen | | | Autor: Manfred X | Datum: 06.05.17 19:56 |
| Hallo!
Dein Wunsch, die Daten selbst einzutragen, hat nichts mit
der Nutzung von Datenbindung zu tun.
Auch wenn Du eine Datatable an das Datagridview bindest,
kannst Du Daten über das Grid direkt in die Table eintragen.
Datenbindung bietet viele Vorteile (z.B. Speichern, Filtern)
Probier mal diese Variante.
Zum Löschen: Zeile im Kopf markieren und Delete-Taste betätigen.
Hinzufügen einer neuen Zeile am Ende erledigt das Grid automatisch.
Zeilennummern im Zeilenkopf werden konsequent hoch gezählt.
Public Class frmEdit
Dim dt As New DataTable
Dim WithEvents bs As New BindingSource With _
{.RaiseListChangedEvents = True}
'Eigenschaften des Grid einrichten
Dim dgv As New DataGridView With _
{.Parent = Me, .Size = New Size(500, 500), .DataSource = bs, _
.SelectionMode = DataGridViewSelectionMode.FullRowSelect, _
.MultiSelect = False}
Dim maxRowNumber As Integer = 0 'Zeilenzähler
Private Sub frmEdit_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
Me.Size = New Size(520, 520)
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Fixed3D
'Erforderliche Eingabespalten
With dt.Columns
.Add("SP1") : .Add("SP2") 'usw.
End With
bs.DataSource = dt
For i As Integer = 0 To dgv.Columns.Count - 1
dgv.Columns(i).SortMode = _
DataGridViewColumnSortMode.NotSortable
Next i
dgv.RowHeadersWidth = 50
End Sub
Private Sub bs_AddingNew(sender As Object, _
e As System.ComponentModel.AddingNewEventArgs) Handles bs.AddingNew
If bs.Count = 0 Then Exit Sub
If dgv.Rows(bs.Count - 1).HeaderCell.Value IsNot Nothing Then Exit Sub
maxRowNumber += 1
dgv.Rows(bs.Count - 1).HeaderCell.Value = maxRowNumber.ToString
End Sub
End Class | |
Re: DataGridView neue Zeile erstellen | | | Autor: ringaila | Datum: 06.05.17 21:03 |
| Hallo,
dank für den Tipp. War genau das was ich suchte.
Fällt noch jemand was zum hinzufügen und entfernen mit strg+ bzw. strg entf ein ? | |
Re: DataGridView neue Zeile erstellen | | | Autor: Manfred X | Datum: 06.05.17 21:51 |
| Irgend so was vielleicht ....
Public Class frmEdit
Dim dt As New DataTable
Dim WithEvents bs As New BindingSource With {.RaiseListChangedEvents = True}
Dim dgv As New DataGridView With _
{.Parent = Me, .Size = New Size(500, 500), .DataSource = bs, _
.SelectionMode = DataGridViewSelectionMode.FullRowSelect, _
.MultiSelect = False, .AllowUserToAddRows = False}
Dim maxRowNumber As Integer = 0
Private Sub frmEdit_KeyDown(sender As Object, _
e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If dgv.Focused Then
'Tasten für dgv verarbeiten
If e.Control Then
If e.KeyCode = Keys.Oemplus Then
bs.AddNew()
maxRowNumber += 1
dgv.Rows(bs.Count - 1).HeaderCell.Value = _
maxRowNumber.ToString
End If
'If e.KeyCode = Keys.Delete Then
' If dgv.SelectedRows.Count > 0 Then
' bs.RemoveAt(dgv.SelectedRows(0).Index)
' e.SuppressKeyPress = True
' End If
'End If
Else
If e.KeyCode = Keys.Delete Then
e.SuppressKeyPress = True
End If
End If
End If
End Sub
Private Sub frmEdit_Load(sender As System.Object, _
e As System.EventArgs) Handles MyBase.Load
Me.KeyPreview = True 'Tasten zuerst ans Formular senden
Me.Size = New Size(520, 520)
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.Fixed3D
With dt.Columns
.Add("SP1") : .Add("SP2")
End With
bs.DataSource = dt
For i As Integer = 0 To dgv.Columns.Count - 1
dgv.Columns(i).SortMode = DataGridViewColumnSortMode.NotSortable
Next
dgv.RowHeadersWidth = 50
End Sub
End Class
Beitrag wurde zuletzt am 06.05.17 um 22:00:01 editiert. | |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevCoolbar 3.0
Professionelle Toolbars im modernen Design!
Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|