devexpress RowStyle 根据条件设置背景色


在 DevExpress 的 ‌WinForms GridControl‌ 中,可以通过 ‌GridView 的 RowStyle 事件‌ 动态设置行的背景色。以下是一个完整示例:

实现步骤:

  1. 绑定 GridView.RowStyle 事件‌:在窗体加载时订阅该事件。
  2. 判断条件并设置颜色‌:在事件处理函数中根据行数据条件修改背景色。
  3. 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;
    }
  4. 关键点说明:

    • RowHandle‌:表示当前行的句柄,需确保 e.RowHandle >= 0 以避免分组行或新行。
    • 获取行数据‌:使用 GetDataRow(针对 DataTable)或 GetRow(针对自定义对象)。
    • 条件优先级‌:设置 e.HighPriority = true 确保自定义样式生效。
    • 性能优化‌:避免在 RowStyle 中执行复杂逻辑,以免影响渲染性能。

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:PVE磁盘测试
下一篇:如何将命令添加到VisualStudio控制台?
评论列表

发表评论

评论内容
昵称:

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码