2

我正在尝试更改索引行背景色,但它看起来很奇怪。基本上我正在做这样的事情,这在默认的.net datagridview 中是可能的。

int packageIndex = Packages.IndexOf(SomePackage);
gridPackages.Rows[packageIndex].BackColor = Color.Green;

在 devexpress GridControl 中做同样的事情似乎真的很烦人。没有这样的属性称为“行”。

gridPackages.gridView.SelectRow(packageIndex);
gridPackages.gridView.Appearance.SelectedRow.BackColor = Color.Green;

一种作品,但是当你改变行时,颜色会变成默认值。这意味着只有选定的行看起来是彩色的。我想动态更改颜色,而不是在加载时。

我知道我在问一个基本问题,但它不起作用。任何帮助将不胜感激..

4

2 回答 2

5

尝试GridView_RowStyle更改行的背景颜色的事件

http://documentation.devexpress.com/#windowsforms/DevExpressXtraGridViewsGridGridView_RowStyletopic

gridView1.RowStyle += gridView1_RowStyle;


private void gridView1_RowStyle(object sender, 
DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) {
   GridView view = sender as GridView;
   if(e.RowHandle >= 0) {
      bool isRed = Convert.ToBoolean(view.GetRowCellDisplayText(e.RowHandle, view.Columns["Category"]));
      if(isRed) {
         e.Appearance.BackColor = Color.Red;
      }            
   }
}
于 2013-08-06T13:01:15.530 回答
4

所以我在朋友的帮助下想出了这样的方法,并且有效。当您再次触发事件时,您只需刷新网格;

gridPackages.gridView.RowCellStyle += gridView_RowCellStyle;

private void gridView_RowCellStyle(object sender, RowCellStyleEventArgs e)
        {
            Package pac = Packages[e.RowHandle];
            if (PackagesInRoom.SingleOrDefault(t => t.PackageID == pac.PackageID) != null)
            {
                e.Appearance.BackColor = Color.Green;
            }
        }
于 2013-08-06T13:27:19.853 回答