排序后丢失索引

时间:2009-09-03 18:52:15

标签: c# gridview sorting

我必须为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
        {

        }

    }

3 个答案:

答案 0 :(得分:1)

查看DevEx文档中提供的示例:

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

您可以注意到他们访问列上的网格视图数据而不是直接访问数据源。

希望这有帮助。

答案 1 :(得分:0)

您想为数据网格设置AlternatingRowsDefaultCellStyle。

例如: this.myDataGrid.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle14;

这假设您正在进行交替的行颜色。抱歉。除非您已经创建了自己的排序功能,否则即使在排序中也应保留您的设置。

答案 2 :(得分:0)

您可以采用Konstantinos描述的方法或使用

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

访问基础数据集。