2009-09-03 7 views
1

DevExpress gridviewの特定の行に色を追加する必要があります。イベントRowStyle(オブジェクト送信者、DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)があります。それはうまく動作しますが、データを並べ替えると、良いインデックスが失われます。この問題を解決するには?私はデータソースにしかアクセスできないので、ソートされたデータにアクセスする方法。ありがとうございました。ここ だけでソートされていないデータで動作するコードです:並べ替え後にインデックスが失われる

private void dataGridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) 
    { 
     try 
     { 

     if ((int)((DataTable)gridControl1.DataSource).Rows[e.RowHandle]["Lating"] > 0) 
      { 
       e.Appearance.BackColor = Color.Red; 

      } 
     } 
     catch 
     { 

     } 

    } 
+0

「良いインデックスが失われている」ということを理解できません。明確にしてください。ありがとう。 – Konstantinos

+0

など。私は値が1,4,2,3の4行を持ち、インデックスは0,1,2,3です。値をソートした後は、1,2,3,4がインデックス0,1,2,3となります。データソースからインデックスで値を取得すると、不正な値が返されます。 –

+0

私は、データソースの代わりにビューデータを使用することで正しい結果が得られると仮定します。 – Konstantinos

答えて

0

[データグリッドのAlternatingRowsDefaultCellStyleを設定します。

例: this.myDataGrid.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle14;

これは、行の色を交互に変更していることを前提としていました。ごめんなさい。独自のソート機能を作っていない限り、ソートしても設定は保持されます。

+0

私は彼がそれを求めるのではなく、レイトフィールドに基づいてカスタムカラーリングを求めていると思う。 – Konstantinos

1

はデベックスのドキュメントに記載されている例を見てみましょう:

using DevExpress.XtraGrid.Views.Grid; 

private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) { 
    GridView View = sender as GridView; 
    if(e.RowHandle >= 0) { 
     string category = View.GetRowCellDisplayText(e.RowHandle, View.Columns["Category"]); 
     if(category == "Beverages") { 
      e.Appearance.BackColor = Color.Salmon; 
      e.Appearance.BackColor2 = Color.SeaShell; 
     }    
    } 
} 

あなたは、彼らが列ではなく、直接データソース上のグリッドビューのデータにアクセスお気づきのように。

これが役に立ちます。

0

あなたのいずれかがコンスタンティノスは、説明的なアプローチを取るか、基礎となるデータセットにアクセスするために

gridView.GetDataRow(e.RowHandle)["Lating"] 

を使用することができます。

関連する問題