Как перебрать определенные столбцы в gridview?
Мне нужно перебрать определенные столбцы в сетке. Например, мне нужно зациклить каждый столбец "%", а затем назначить цвета в соответствии с их значениями, есть ли простой способ добиться этого? Благодарю.
Таблица Gridview
Событие RowDataBound
Protected Sub gv_ssi_rzli_data_1_RowDataBound(sender As Object, e As EventArgs) Handles gv_ssi_rzli_data_1.RowDataBound
Dim gv As GridView = gv_ssi_rzli_data_1
For i As Integer = 0 To gv.Rows.Count - 1
If gv.Rows(i).Cells(0).Text = "Oct" Or
gv.Rows(i).Cells(0).Text = "Nov" Or
gv.Rows(i).Cells(0).Text = "Dec" Then
If gv.Rows(i).Cells(2).Text >= Session("rzli_avg_blue_1") Then
gv.Rows(i).Cells(2).BackColor = System.Drawing.Color.LightBlue
ElseIf gv.Rows(i).Cells(2).Text >= Session("rzli_avg_green_1") And gv.Rows(i).Cells(2).Text < Session("rzli_avg_blue_1") Then
gv.Rows(i).Cells(2).BackColor = System.Drawing.Color.LightGreen
ElseIf gv.Rows(i).Cells(2).Text >= Session("rzli_avg_yellow_1") And gv.Rows(i).Cells(2).Text < Session("rzli_avg_green_1") Then
gv.Rows(i).Cells(2).BackColor = System.Drawing.Color.LightYellow
ElseIf gv.Rows(i).Cells(2).Text <= Session("rzli_avg_red_1") Then
gv.Rows(i).Cells(2).BackColor = System.Drawing.Color.LightPink
End If
End If
Next
End Sub
1 ответ
Есть несколько способов сделать это.
Во-первых, я, вероятно, должен указать, что вы, кажется, читаете всю сетку каждый раз, когда связываете строку, что кажется ненужным.
Помимо этого, возможно, самым простым способом было бы абстрагирование кода, который выполняет сравнение с вашим значением, в его собственный метод с параметрами, которые должны быть ячейкой, подлежащей проверке и изменению. Поскольку я предполагаю, что из вашего использования индекса столбца 2 вы знаете, какие столбцы являются процентными столбцами, вы просто вызовете новый метод с соответствующей ячейкой, например, так:
For i As Integer = 0 To gv.Rows.Count - 1
Dim row = gv.Rows(i)
Dim rowHeaderCell = row.Cells(0)
if rowHeadercell.Text = "Oct" Or
rowHeaderCell.Text = "Nov" or
rowHeaderCell.Text = "Dec" Then
SetCellBackGround(row.Cells(2))
SetCellBackground(row.Cells(4))
' etc.
End If
Next
Выше я предполагаю, что по какой-то причине вы хотите просто выделить цифры октябрь-декабрь. Если вы хотите, чтобы это варьировалось, или хотите использовать другой набор цветов для других помещений, скажите, пожалуйста.
SetCellBackground будет выглядеть так (набирается из памяти):
Sub SetCellBackground(TableCell cell)
If cell.Text >= Session("rzli_avg_blue_1") Then
cell.BackColor = System.Drawing.Color.LightBlue
ElseIf cell.Text >= Session("rzli_avg_green_1") And cell.Text < Session("rzli_avg_blue_1") Then
cell.BackColor = System.Drawing.Color.LightGreen
ElseIf cell.Text >= Session("rzli_avg_yellow_1") And cell < Session("rzli_avg_green_1") Then
cell = System.Drawing.Color.LightYellow
ElseIf cell <= Session("rzli_avg_red_1") Then
cell.BackColor = System.Drawing.Color.LightPink
End If
End Sub