devexpress RowStyle 根据条件设置背景色
在 DevExpress 的 WinForms GridControl 中,可以通过 GridView 的 RowStyle
事件 动态设置行的背景色。以下是一个完整示例:
实现步骤:
- 绑定
GridView.RowStyle
事件:在窗体加载时订阅该事件。 - 判断条件并设置颜色:在事件处理函数中根据行数据条件修改背景色。
- C# 全选
using DevExpress.XtraGrid.Views.Grid; // 在窗体加载时订阅事件 private void Form_Load(object sender, EventArgs e) { gridView1.RowStyle += gridView1_RowStyle; gridControl1.DataSource = GetData(); // 绑定数据源 } // 处理 RowStyle 事件 private void gridView1_RowStyle(object sender, RowStyleEventArgs e) { GridView view = sender as GridView; if (view == null) return; // 获取当前行的数据对象(假设绑定的是 DataTable 或自定义对象列表) if (e.RowHandle >= 0) { DataRow row = view.GetDataRow(e.RowHandle); // 或自定义对象:var item = view.GetRow(e.RowHandle) as YourModel; // 示例条件:库存小于 10 时设置为红色背景 if (row != null && Convert.ToInt32(row["Stock"]) < 10) { e.Appearance.BackColor = Color.LightCoral; e.HighPriority = true; // 确保优先级,覆盖默认样式 } } } // 示例数据源 private DataTable GetData() { DataTable dt = new DataTable(); dt.Columns.Add("Product", typeof(string)); dt.Columns.Add("Stock", typeof(int)); dt.Rows.Add("Apple", 5); dt.Rows.Add("Banana", 15); return dt; }
关键点说明:
-
RowHandle
:表示当前行的句柄,需确保e.RowHandle >= 0
以避免分组行或新行。 - 获取行数据:使用
GetDataRow
(针对DataTable
)或GetRow
(针对自定义对象)。 - 条件优先级:设置
e.HighPriority = true
确保自定义样式生效。 - 性能优化:避免在
RowStyle
中执行复杂逻辑,以免影响渲染性能。
-
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post 张国生