我有一个绑定到数据库表的 DataGridView。Visual Studio 创建了网格和绑定导航器工具条。导航、插入、删除工作正常...但是:如果我通过单击某个列标题对网格进行排序,则插入一行会弄乱网格。传递给 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); //
}
}
}
有什么提示吗?可能是我不了解数据绑定的逻辑以及如何访问行和数据源。但我还看不到我的错误。在此先感谢...霍尔格