neue Zeile einer DataView hinzufügen

24/07/2008 - 09:15 von Christoph Michalski | Report spam
Hallo,
ich benutze in meinem VB2005-Programm ein DataGridView-Steuerelement, das an
eine DataView gebunden ist:

Me.TestDataGridView.DataSource = TestDataView

Nun muß ich zur Laufzeit immer wieder neue Zeilen hinzufügen und versuche es
folgendermassen:

Sub TEST ()
Dim NeueZeile As DataRowView =TestDataView.AddNew
NeueZeile.EndEdit
End sub

Leider wird die neue Zeile nur sporadisch eingefügt und im DataGridView
angezeit, meistens passiert da aber gar nicht, es wird auch kein Fehler
ausgelöst.

Kann mir jemand sagen, was ich heir falsch mache???
Gruß
Christoph
 

Lesen sie die antworten

#1 Peter Fleischer
24/07/2008 - 10:09 | Warnen spam
"Christoph Michalski" schrieb
im Newsbeitrag news:

ich benutze in meinem VB2005-Programm ein DataGridView-Steuerelement, das
an
eine DataView gebunden ist:

Me.TestDataGridView.DataSource = TestDataView

Nun muß ich zur Laufzeit immer wieder neue Zeilen hinzufügen und versuche
es
folgendermassen:

Sub TEST ()
Dim NeueZeile As DataRowView =TestDataView.AddNew
NeueZeile.EndEdit
End sub

Leider wird die neue Zeile nur sporadisch eingefügt und im DataGridView
angezeit, meistens passiert da aber gar nicht, es wird auch kein Fehler
ausgelöst.

Kann mir jemand sagen, was ich heir falsch mache???



Hi Christoph,
da wird in deinem Code irgendwo noch ein Problem stecken. Wenn ich das von
dir geschilderte Szenario bei mir teste, kann ich kein Problem entdecken.
Hier mal meine Testumgebung:

Option Infer On
Option Strict On

Class Form1

Dim dgv As New DataGridView With {.Dock = DockStyle.Fill}
Dim btn As New Button With {.Dock = DockStyle.Top, .Text = "new Row"}

Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Me.Controls.AddRange(New Control() {dgv, btn})
dgv.DataSource = TestData.View

AddHandler btn.Click, AddressOf btnClick
End Sub

Private Sub btnClick(ByVal sender As Object, ByVal e As EventArgs)
TestData.View.AddNew()
End Sub
End Class

Public Class TestData

Private Shared dv As DataView

Shared Sub New()
LoadData()
End Sub

Public Shared Sub LoadData()
Try
' Table
Dim dt As New DataTable("Tab1")
With dt
With .Columns
With .Add("ID", GetType(Integer))
.AutoIncrement = True
.AutoIncrementStep = -1
.AutoIncrementSeed = -1
End With
.Add("col1", GetType(String))
.Add("col2", GetType(Double))
End With
dv = .DefaultView
' Data
For i = 1 To 10
.Rows.Add(dt.NewRow)
With .Rows(.Rows.Count - 1)
.Item("col1") = "Row " & i.ToString
.Item("col2") = Rnd()
End With
Next
End With
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub

Public Shared ReadOnly Property View() As DataView
Get
Return DV
End Get
End Property

End Class


Viele Gruesse

Peter

Ähnliche fragen