C# 如何将行添加到已排序的datagrid视图

C# 如何将行添加到已排序的datagrid视图,c#,datagridview,sorted,C#,Datagridview,Sorted,我有一个绑定到数据库表的DataGridView。VisualStudio创建了网格和绑定导航器Toolstrip。导航、插入和删除都可以正常工作。。。 但是: 如果我通过单击某个列标题对网格进行排序,则插入一行会弄乱网格。传递给RowsAdded事件处理程序的行索引错误。它总是最后一行的索引,以前在未排序模式下很好。在排序模式下,我编辑了错误的行,看不到找到正确行的索引的机会。 即使索引始终是最后一行,所有数据绑定列也会正确显示。非数据绑定列会出现此问题。在本例中,图像列取决于数据绑定列。图像

我有一个绑定到数据库表的DataGridView。VisualStudio创建了网格和绑定导航器Toolstrip。导航、插入和删除都可以正常工作。。。 但是: 如果我通过单击某个列标题对网格进行排序,则插入一行会弄乱网格。传递给RowsAdded事件处理程序的行索引错误。它总是最后一行的索引,以前在未排序模式下很好。在排序模式下,我编辑了错误的行,看不到找到正确行的索引的机会。 即使索引始终是最后一行,所有数据绑定列也会正确显示。非数据绑定列会出现此问题。在本例中,图像列取决于数据绑定列。图像始终在最后一行绘制。因此忽略排序

以下是我在RowsAdded事件处理程序中所做的操作:

for (int i = 0; i < e.RowCount; ++i)
        {
            DataGridViewRow row = dataGridView_Energietraeger.Rows[i + e.RowIndex];

            object idObj = row.Cells[Column_Id.Index].Value;
            if (idObj is System.DBNull || idObj == null)
            {
                // set default values to all cells in new row...

                // set icon indicating ro/ rw mode - wrong row when sorted!
                row.ReadOnly = (bool)readonlyObj;
                SetIconCellImage(row);  
            }
            else
            {
                object readonlyObj = row.Cells[Column_Readonly.Index].Value;
                if (!(readonlyObj is System.DBNull) && readonlyObj != null)
                {
                    row.ReadOnly = (bool)readonlyObj;
                    SetIconCellImage(row);  //
                }
            }
        }
for(int i=0;i
有什么提示吗? 可能是我不理解数据绑定的逻辑以及如何访问行和数据源。但我还看不出我的错误。先谢谢你。。。 霍尔格