2013-08-06 123 views
2

我想改變一個索引行backroundcolor,但它似乎很奇怪。基本上我很喜歡這樣做,這是可能的默認情況下.NET DataGridView。Devexpress GridControl row backcolor

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

在devexpress GridControl中看起來真的很煩人。沒有這種屬性稱爲「行」。

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

樣的作品,但是當你更改行,顏色得到默認。這意味着只有選定的行顯示爲着色。我想動態改變顏色,而不是加載。

我知道我在問一個基本問題,但它不工作。任何幫助將不勝感激..

回答

3

,所以我想出了這樣一個朋友的幫助下,它的工作原理。當您再次觸發事件時,您只需刷新網格;

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; 
      } 
     } 
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; 
     }    
    } 
} 
+0

我不認爲它會適用於像「行[0]」這樣的行的動態到達,您怎麼看?實際上你打算如何解決我的問題? – Ktt

+0

不是這種方式,你需要找到所有網格的條件,如果e.RowHandle == index然後RED其他透明 – Zyku

+0

你將如何觸發事件? gridView1_RowStyle(??,??) – Ktt