vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
DataGridView 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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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)?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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 ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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