Ich habe Probleme mit Bildspalte in meinem vb.net datagridview. Alles, was ich tun möchte, ist das Bild abhängig von einer bedingten Zeitspanne zu ändern.vb.net datagridview Bildspalte (Bild ändern - bedingt)
Hier ist der vollständige Code:
con.Open()
da.SelectCommand = New OleDbCommand(Q, con)
da.Fill(ds)
da.Fill(dt)
DataGridView1.DataSource = dt
con.Close()
Dim receivedfrom As Date = Convert.ToDateTime(DateTimePicker1.Value)
Dim receivedto As Date = Convert.ToDateTime(DateTimePicker2.Value)
Dim difference As TimeSpan
Dim received As Date
Dim today As Date = today
Dim imgcol As New DataGridViewImageColumn()
Dim inImg As Image = My.Resources.red
imgcol.Image = inImg
DataGridView1.Columns.Add(imgcol)
imgcol.HeaderText = ""
imgcol.Name = "img"
imgcol.DataPropertyName = "img"
With DataGridView1
.Columns("img").DisplayIndex = 1
.Columns("img").Width = 28
.Columns("AC_RECEIVEDDT").DisplayIndex = 2
End With
For rowIndex = 0 To DataGridView1.RowCount - 1
received = DataGridView1.Rows(rowIndex).Cells("AC_RECEIVEDDT").Value
difference = today.Subtract(received)
If difference.Days < 2 Then
DataGridView1.Rows(rowIndex).Cells("img").Value = My.Resources.green
ElseIf difference.Days = 2 Then
DataGridView1.Rows(rowIndex).Cells("img").Value = My.Resources.yellow
Else
DataGridView1.Rows(rowIndex).Cells("img").Value = My.Resources.red
End If
Next
Nun, wenn ich die Anwendung öffnen, werden alle Bilder in der roten Farbe kommen nur.
Ich habe die Spalte name = "img" hinzugefügt, deshalb habe ich die Bilder schon, aber mein Problem ist, dass alle Bilder nicht basierend auf dem empfangenen Datum geändert werden, alle Bilder werden rot angezeigt.
Mein Plan war es, den Fall mit einer Zeitspanne von weniger als 2 Tagen mit grünem Bild als akzeptable Bearbeitungszeit erscheinen zu lassen. Gleich 2 = gelbes Bild. Mehr als 2 Tage = rot.
Ich habe jetzt das rote Bild für alle Zeilen, aber es wird nicht basierend auf der if-Anweisung geändert, alle Zeilen haben ROT, wie ich es in der Bildspalte zugewiesen habe.
Ziel:
This is a DGV list with conditional status, that's exactly what i want to do
ist klar, es ist nicht die IF-Anweisung angewendet wird, ist etwas nicht in Ordnung? Fehle ich etwas?
Hoffe, die Idee ist klar genug.
Jede Hilfe wäre willkommen. Danke!
Du hast gesetzt imgcol.name nicht als „img‘ –
a) Das Ereignis oder Cellformatting RowPrePaint Ereignis wäre ein besserer Ort sein Das Problem besteht darin, dass Sie ein neues Bildobjekt für jede Zeile erstellen.Wenn es 300 rote Zeilen gibt, erstellen Sie 300 rote Bilder. Schließlich wird die App leer sein Ressourcen – Plutonix
Was meinst du damit, dass dir die Ressourcen ausgehen? –