Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 排序后索引丢失_C#_Gridview_Sorting - Fatal编程技术网

C# 排序后索引丢失

C# 排序后索引丢失,c#,gridview,sorting,C#,Gridview,Sorting,我必须为DevExpress gridview的特定行添加颜色。存在一个事件行样式(对象发送者,DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)。它工作正常,但是如果我对数据进行排序,好的索引就会丢失。如何解决这个问题?如何访问已排序的数据,因为我只能访问数据源。非常感谢。 以下代码仅适用于未排序的数据: private void dataGridView1_RowStyle(object sender, DevExpress.XtraGri

我必须为DevExpress gridview的特定行添加颜色。存在一个事件行样式(对象发送者,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
        {

        }

    }

要为数据网格设置AlternatingRowsDefaultCellStyle

例: this.myDataGrid.AlternatingRowsDefaultCellStyle=dataGridViewCellStyle14


这是假设您正在交替行颜色。很抱歉即使在排序时,也应保留您的设置,除非您有自己的排序功能

要为数据网格设置AlternatingRowsDefaultCellStyle

例: this.myDataGrid.AlternatingRowsDefaultCellStyle=dataGridViewCellStyle14


这是假设您正在交替行颜色。很抱歉即使在排序时,也应保留您的设置,除非您有自己的排序功能

看看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;
       }            
    }
 }
正如您所注意到的,它们访问列上的网格视图数据,而不是直接访问数据源


希望这能有所帮助。

看看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;
       }            
    }
 }
正如您所注意到的,它们访问列上的网格视图数据,而不是直接访问数据源


希望这有帮助。

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

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

访问基础数据集。

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

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

访问基础数据集。

我不明白您所说的“好的索引丢失”是什么意思。您能澄清一下吗?谢谢。我有4行,值为1,4,2,3,索引为0,1,2,3。排序后的值为1,2,3,4,索引为0,1,2,3。如果我通过索引从数据源中获取值,我将得到不正确的值。我假设通过使用视图数据而不是数据源,您将得到正确的结果?我不理解您所说的“好的索引丢失”是什么意思,您能澄清一下吗?谢谢。我有4行,值为1,4,2,3,索引为0,1,2,3。排序后的值为1,2,3,4,索引为0,1,2,3。如果我通过索引从数据源获取值,我会得到不正确的值。我假设通过使用视图数据而不是数据源,你会得到正确的结果?我不认为他要求这样做,而是基于拉丁字段的自定义着色。我认为他不要求这样做,而是基于拉丁字段的自定义着色。