如何根据数值条件修改UltraGrid中单个单元格的背景色?
实现方案
Infragistics UltraGrid 支持单元格级别的样式自定义,可通过InitializeRow事件实现单单元格背景色修改,无需整行/整列设置。
C# 实现
首先绑定UltraGrid的InitializeRow事件,事件处理逻辑如下:
private void ultraGrid1_InitializeRow(object sender, Infragistics.Win.UltraWinGrid.InitializeRowEventArgs e) { // 将TargetColumn替换为你实际需要处理的列Key var cell = e.Row.Cells["TargetColumn"]; // 判定单元格值非空且不等于0 if (cell.Value != null && cell.Value != DBNull.Value && Convert.ToInt32(cell.Value) != 0) { cell.Appearance.BackColor = Color.Yellow; } }
VB.NET 实现
Private Sub UltraGrid1_InitializeRow(sender As Object, e As Infragistics.Win.UltraWinGrid.InitializeRowEventArgs) Handles UltraGrid1.InitializeRow ' 将TargetColumn替换为你实际需要处理的列Key Dim cell As Infragistics.Win.UltraWinGrid.UltraGridCell = e.Row.Cells("TargetColumn") ' 判定单元格值非空且不等于0 If cell.Value IsNot Nothing AndAlso cell.Value IsNot DBNull.Value AndAlso Convert.ToInt32(cell.Value) <> 0 Then cell.Appearance.BackColor = Color.Yellow End If End Sub
注意事项
- 如果目标列的数据类型不是整数,需要把
Convert.ToInt32替换为对应类型的转换方法,例如小数用Convert.ToDecimal - 如果需要对所有列生效,遍历
e.Row.Cells集合逐个处理即可 - 运行时修改单元格数据后,样式会自动刷新无需手动触发重绘
内容的提问来源于stack exchange,提问作者user17151986
相关产品推荐
相关产品推荐

