Я борюсь со столбцом изображения в своем vb.net datagridview. Все, что я хочу сделать, это изменить изображение в зависимости от условного промежутка времени.vb.net datagridview image column (изменить изображение - условно)
Вот полный код:
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
Теперь, когда я открываю приложение, все изображения приходят только красный цвет.
Я добавил столбец name = "img", поэтому я получил изображения уже, но моя проблема в том, что все изображения не изменяются в зависимости от полученного значения даты, все изображения отображаются красным цветом.
Мой план состоял в том, чтобы иметь случай с временным интервалом менее 2 дней, чтобы появиться с зеленым изображением в качестве приемлемого периода обработки. Равно 2 = желтое изображение. Более 2 дней = красный.
У меня теперь есть красное изображение для всех строк, но его не изменяют в зависимости от оператора if, все строки имеют RED, поскольку я назначил его в столбце изображения.
Цель:
This is a DGV list with conditional status, that's exactly what i want to do
Ясно, что не применяя оператор IF, есть что-то не так? Я что-то упускаю ?
Надеюсь, эта идея достаточно ясна.
Любая помощь будет оценена по достоинству. Спасибо!
Вы не установили imgcol.name как «IMG» –
а) событие cellFormatting или RowPrePaint событие было бы лучше чтобы установить изображение, а не циклически перемещаться по всем строкам. b) Большая проблема заключается в том, что вы создаете новый объект изображения для каждой строки. Если имеется 300 красных строк, вы создаете 300 красных изображений. В конечном итоге приложение закончится ресурсы – Plutonix
Что вы имеете в виду из-за нехватки ресурсов? –