【发布时间】:2016-12-21 16:39:09
【问题描述】:
我从 CSV 文件中提取数据,在 DataTable 中对其进行解析,然后将此 DataTable 设置为 DataGrid 的 ItemsSource。然后,我循环 DataTable 以对数据进行一些验证,并且我想相应地为 DataGrid 行着色。
问题是,我无法根据DataTable行找到对应的DataGrid行。
这是我的代码:
Dim dg As New DataGrid
Dim dataTable as DataTable = ParseFile(filePath)
Dim statutList() As String = {"Saisi", "Validé", "Suspendu", "Annulé"}
dg.ItemsSource = dataTable.DefaultView
For Each row As DataRow In dataTable.Rows
'This line is what I tried, but it always returns nothing
Dim dgrow As DataGridRow = dg.ItemContainerGenerator.ContainerFromItem(row)
If Not statutList.Contains(row("Statut").ToString) Then
dgrow.Background = Brushes.Red
End If
Next
问题来自这一行,它不起作用:
Dim dgrow As DataGridRow = dg.ItemContainerGenerator.ContainerFromItem(row)
解决方案:
两种 mm8 解决方案都有效。就我而言,我使用了:
dg.UpdateLayout()
For Each row As DataRowView In dg.Items.OfType(Of DataRowView)
Dim dgrow As DataGridRow = dg.ItemContainerGenerator.ContainerFromItem(row)
If Not statutList.Contains(row("Statut").ToString) Then
dgrow.Background = Brushes.Red
End If
Next
【问题讨论】: