Seite 1 von 2
DataGridView in VB.Net
Verfasst: 10.03.2013 19:07
von Pure_Beginner
Hallo zusammen,
heute mal ein etwas ungewöhnliches Problem.
Poste hier weil man es in andern Foren anscheinend nicht Lösen kann.
Eine Frage zu DataGridView's.
Habe folgendes Sub geschrieben und möcht das DataGridView von DataGridView1 bis DataGridView12 um je 1 erhöhen,
bin aber nicht sicher wie ?.
Hier mein Code:
Code: Alles auswählen
Private Sub Erzeugen(jahr As Integer)
Dim d As Date
Dim i As Integer, m As Integer
Dim s As String
Dim Tage_im_Monat(12) As Integer
Tage_im_Monat(1) = 31
Tage_im_Monat(2) = Schaltjahr(jahr)
Tage_im_Monat(2) = 31
Tage_im_Monat(4) = 30
Tage_im_Monat(5) = 31
Tage_im_Monat(6) = 30
Tage_im_Monat(7) = 31
Tage_im_Monat(8) = 31
Tage_im_Monat(9) = 30
Tage_im_Monat(10) = 31
Tage_im_Monat(11) = 30
Tage_im_Monat(12) = 31
For m = 1 To 12 Step 1
For i = 1 To Tage_im_Monat(m) Step 1
s = CStr(i) + "/" + "1" + "/" + CStr(jahr)
Console.WriteLine(s)
d = CDate(s)
DataGridView1.Rows.Add(d.ToString("ddd", New CultureInfo("de-DE")), CStr(i))
Next
Next
End Sub
Dabei geht es um die Zeile
Code: Alles auswählen
DataGridView1.Rows.Add(d.ToString("ddd", New CultureInfo("de-DE")), CStr(i))
DataGridView sollte in der For Schleife immer den Wert m annehmen.
für eure Hilfe wäre ich dankbar.
Grüße
Christian
Re: DataGridView in VB.Net
Verfasst: 10.03.2013 19:37
von Kiffi
ich würde eine DataTable als Datenquelle verwenden. Und Date.DaysInMonth() liefert
Dir die Anzahl der Tage des jeweiligen Monats zurück:
Code: Alles auswählen
Private Sub Erzeugen(Jahr As Integer)
Dim myDataTable As New DataTable
myDataTable.Columns.Add("Jahr")
myDataTable.Columns.Add("Monat")
myDataTable.Columns.Add("TageImMonat")
For Monat As Integer = 1 To 12
Dim myDataRow As DataRow = myDataTable.NewRow
myDataRow("Jahr") = Jahr
myDataRow("Monat") = Monat
myDataRow("TageImMonat") = Date.DaysInMonth(Jahr, Monat)
myDataTable.Rows.Add(myDataRow)
Next
DataGridView1.DataSource = myDataTable
End Sub
Grüße ... Kiffi
Re: DataGridView in VB.Net
Verfasst: 10.03.2013 19:53
von Pure_Beginner
@Kiffi
Danke für deine schnelle Antwort,
leider funktioniert der Code nicht.
Nur der erste Monat(Gridview1) wird mit einem Grid gefüllt aber ohne Nummerierung und Wochentage.
Grüße
Christian
Nachtrag:
brauche ich nicht zwei Schleifen ?
eine für Anzahl der Tage und eine für Anzahl der Monate ?
Re: DataGridView in VB.Net
Verfasst: 10.03.2013 20:17
von Kiffi
Pure_Beginner hat geschrieben:leider funktioniert der Code nicht.
ähm, mein Code funktioniert. Kann sein, dass er nicht
das macht, was Du möchtest.
Pure_Beginner hat geschrieben:Nur der erste Monat(Gridview1) wird mit einem Grid gefüllt aber ohne Nummerierung und Wochentage.
verstehe ich nicht. Kannst Du mir mal 'aufmalen', was Du genau meinst?
Grüße ... Kiffi
Re: DataGridView in VB.Net
Verfasst: 10.03.2013 20:29
von Pure_Beginner
@Kiffi
habs leider nicht so mit dem Malen, obwohl ich den ganzenTag mit CAD zubringe
werde versuchen es zu beschreiben
es gibt ein TAB Contol mit 12 einträgen für jeden Monat eins
auf jedem TAB befindet sich ein DataGridView, auf TAB1 DataGridView1, auf TAB2 DataGridView2 usw....
ich möchte nach und nach jedes DataGridView von 1 bis 12 mit Wochentagen und Zahlen (Anzahl der Tage) füllen.
Weis aber Leider nicht wie ich
Code: Alles auswählen
DataGridView1.Rows.Add(d.ToString("ddd", New CultureInfo("de-DE")), CStr(i))
hochzählen soll, damit daraus
Code: Alles auswählen
DataGridView2.Rows.Add(d.ToString("ddd", New CultureInfo("de-DE")), CStr(i))
Code: Alles auswählen
DataGridView3.Rows.Add(d.ToString("ddd", New CultureInfo("de-DE")), CStr(i))
usw. wird
Grüße
Re: DataGridView in VB.Net
Verfasst: 10.03.2013 21:00
von Kiffi
achso, dann musst Du vorher ein Array mit den Grids befüllen:
Code: Alles auswählen
Dim myGridArray(12) As DataGridView
myGridArray(1) = DataGridView1
myGridArray(2) = DataGridView2
' und so weiter
und danach über die Monate iterieren:
Code: Alles auswählen
myGridArray(Monat).Rows.Add(d.ToString("ddd", New CultureInfo("de-DE")), CStr(i))
Grüße ... Kiffi
Re: DataGridView in VB.Net
Verfasst: 10.03.2013 21:38
von Pure_Beginner
@Kiffi
funktioniert super,
hab leider noch einen Fehler in meinem Code den ich nicht finde
beim zweiten Monat meckert er den 29 Februar an wenn ich das Programm starte (2013 kein Schaltjahr).
obwohl er sich den Wert Tage_im_Monat(2) = 28
aus dem ARRAY holen sollte.
was hab ich nur Übersehen ?
Code: Alles auswählen
Private Sub Erzeugen(jahr As Integer)
Dim d As Date
Dim i As Integer, m As Integer
Dim s As String
Dim Tage_im_Monat(12) As Integer
Tage_im_Monat(1) = 31
Tage_im_Monat(2) = 28
Tage_im_Monat(2) = 31
Tage_im_Monat(4) = 30
Tage_im_Monat(5) = 31
Tage_im_Monat(6) = 30
Tage_im_Monat(7) = 31
Tage_im_Monat(8) = 31
Tage_im_Monat(9) = 30
Tage_im_Monat(10) = 31
Tage_im_Monat(11) = 30
Tage_im_Monat(12) = 31
Dim myGridArray(12) As DataGridView
myGridArray(1) = DataGridView1
myGridArray(2) = DataGridView2
myGridArray(3) = DataGridView3
myGridArray(4) = DataGridView4
myGridArray(5) = DataGridView5
myGridArray(6) = DataGridView6
myGridArray(7) = DataGridView7
myGridArray(8) = DataGridView8
myGridArray(9) = DataGridView9
myGridArray(10) = DataGridView10
myGridArray(11) = DataGridView11
myGridArray(12) = DataGridView12
For m = 1 To 12 Step 1
For i = 1 To Tage_im_Monat(m) Step 1
s = CStr(i) + "/" + CStr(m) + "/" + CStr(jahr)
d = CDate(s)
myGridArray(m).Rows.Add(d.ToString("ddd", New CultureInfo("de-DE")), CStr(i))
Next
Next
End Sub
Re: DataGridView in VB.Net
Verfasst: 10.03.2013 21:43
von Pure_Beginner
in selbst drauf gekommen
Code: Alles auswählen
Dim Tage_im_Monat(12) As Integer
Tage_im_Monat(1) = 31
Tage_im_Monat(2) = 28
Tage_im_Monat(2) = 31
Tage_im_Monat(4) = 30
hab 2 mal Tage_im_Monat(2) angegeben.
Wie Blöd
nochmals besten Dank
Christian
Re: DataGridView in VB.Net
Verfasst: 10.03.2013 23:17
von Kiffi
Pure_Beginner hat geschrieben:hab 2 mal Tage_im_Monat(2) angegeben.
japp
Nochmals: es gibt ein Date.DaysInMonth(). Dann brauchst Du auch kein Tage_im_Monat()-Array.
Code: Alles auswählen
Private Sub Erzeugen(jahr As Integer)
Dim d As Date
Dim i As Integer, m As Integer
Dim s As String
Dim myGridArray(12) As DataGridView
myGridArray(1) = DataGridView1
myGridArray(2) = DataGridView2
myGridArray(3) = DataGridView3
myGridArray(4) = DataGridView4
myGridArray(5) = DataGridView5
myGridArray(6) = DataGridView6
myGridArray(7) = DataGridView7
myGridArray(8) = DataGridView8
myGridArray(9) = DataGridView9
myGridArray(10) = DataGridView10
myGridArray(11) = DataGridView11
myGridArray(12) = DataGridView12
For m = 1 To 12
For i = 1 To Date.DaysInMonth(jahr, m)
s = CStr(i) + "/" + CStr(m) + "/" + CStr(jahr)
d = CDate(s)
myGridArray(m).Rows.Add(d.ToString("ddd", New CultureInfo("de-DE")), CStr(i))
Next
Next
End Sub
Step 1 brauchst Du übrigens auch nicht immer anzugeben.
Grüße ... Kiffi
Re: DataGridView in VB.Net
Verfasst: 11.03.2013 00:03
von Pure_Beginner
@Kiffi
super Tipp das mit Date.DaysInMonth().
Wo kann ich sowas finden, alle Bücher die man kauft sind nur damit beschäftigt OOP und Schleifen usw. zu erklären,
ein richtiges Verzeichnis aller Befehle habe ich noch nicht gefunden.
hast du einen Tipp ?
Grüße
Christian