ich habe mal versucht ein Beispiel zu basteln, es macht noch nicht ganz was ich möchte
ich möchte ja das er ab Startdatum bis Enddatum in die Tabelle anlegt
nicht wie jetzt ein Datum (Datenzeile) hinzufügen.
Public Class Form1
Private mDT As DataTable
Private WithEvents mBS As BindingSource
Private WithEvents DGV As DataGridView
Private WithEvents btnAddNew As Button
Private Rnd As New Random
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
CreateControls()
CreateData()
With DGV
.DataSource = mBS
.Columns(0).DefaultCellStyle.Alignment = _
DataGridViewContentAlignment.MiddleRight
.Columns(2).DefaultCellStyle.Format = "dd.MM.yyyy"
.Columns(2).DefaultCellStyle.NullValue = ""
.Columns(3).DefaultCellStyle.Format = "HH:mm"
.Columns(3).DefaultCellStyle.NullValue = "00:00"
.Columns(4).DefaultCellStyle.Format = "HH:mm"
.Columns(4).DefaultCellStyle.NullValue = "00:00"
.AutoResizeColumns()
.AutoResizeRows()
End With
mBS.Position = mBS.Count - 1
End Sub
Private Sub btnAddNew_Click _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles btnAddNew.Click
Dim D As Date = _
Date.Today.AddDays(Rnd.Next(0, 1))
Dim DR As DataRow = mDT.NewRow
Dim NewID As Integer = GetNewID()
DR.Item(0) = NewID
DR.Item(1) = Format(D, "ddd")
DR.Item(2) = D
DR.Item(3) = Format(Now, "HH:mm")
DR.Item(4) = Format(Now, "HH:mm")
mDT.Rows.Add(DR)
Dim Pos As Integer = _
mBS.Find("ID", NewID)
mBS.Position = Pos
End Sub
Private Sub CreateData()
Dim i As Integer
Dim DR As DataRow
mDT = New DataTable
With mDT
.Columns.Add("ID", GetType(Integer))
.Columns(0).AllowDBNull = False
.Columns(0).Unique = True
.Columns.Add("Tag", GetType(String))
.Columns.Add("Datum", GetType(Date))
.Columns.Add("Start", GetType(Date))
.Columns.Add("Ende", GetType(Date))
Dim D As Date
For i = 1 To 15
D = Date.Today.AddDays _
(Rnd.Next(0, 5))
DR = .NewRow
DR.Item(0) = i
DR.Item(1) = Format(D, "ddd")
DR.Item(2) = D
DR.Item(3) = Format(Now, "HH:mm")
DR.Item(4) = Format(Now, "HH:mm")
.Rows.Add(DR)
Next
.AcceptChanges()
End With
mBS = New BindingSource
mBS.DataSource = mDT
mBS.Sort = "ID"
End Sub
Private Function GetNewID() As Integer
Dim DV As DataView = _
DirectCast(mBS.List, DataView)
Dim DRV As DataRowView
Dim ID As Integer
For Each DRV In DV
If DRV.Item(0) IsNot DBNull.Value Then
Dim i As Integer = _
CType(DRV.Item(0), Integer)
If i > ID Then
ID = i
End If
End If
Next
Return ID + 1
End Function
Private Sub CreateControls()
Me.Size = New Size(650, 670)
DGV = New DataGridView
With DGV
.SetBounds _
(10, 10, _
Me.ClientSize.Width - 20, _
Me.ClientSize.Height - 70)
.Anchor = AnchorStyles.Left Or _
AnchorStyles.Top Or _
AnchorStyles.Right Or _
AnchorStyles.Bottom
.DefaultCellStyle.Font = _
New Font("Arial", 12)
.ColumnHeadersDefaultCellStyle.Font = _
New Font("Arial", 8, FontStyle.Bold)
End With
Me.Controls.Add(DGV)
btnAddNew = New Button
With btnAddNew
.SetBounds _
(Me.ClientSize.Width - 110, _
DGV.Bottom + 10, _
100, 40)
.Anchor = AnchorStyles.Right Or _
AnchorStyles.Bottom
.Text = "Add New"
End With
Me.Controls.Add(btnAddNew)
End Sub
Private Sub mBS_PositionChanged _
(ByVal sender As Object, _
ByVal e As System.EventArgs _
) Handles mBS.PositionChanged
If mBS.Position > -1 Then
Dim DR As DataRow
Dim DRV As DataRowView
DRV = DirectCast(mBS.Current, DataRowView)
DR = DRV.Row
Me.Text = DR.Item(0).ToString & "; " & _
DR.Item(1).ToString & "; " & _
DR.Item(2).ToString
End If
End Sub
End Class |