我有一个DataGridView
,我从PostgreSQL中的视图填充:
dataSource = new BindingSource();
dgData.DataSource = dataSource;
dataSource.DataSource = Program.DB.GetView(dbView, filter);
(Program.DB.GetView
返回DataTable
)
当我选择了一行并对DataGridView
进行排序时,我的选择卡在同一个索引处。我希望选择保留在所选记录中。
我试图获取第一列(这是数据库的主键)并使用它来引用视图中的行,但我不知道如何正确执行。
if (dgData.SelectedRows.Count == 1) {
rowIdx = (int)dgData.SelectedRows[0].Cells[0].Value;
colName = dgData.Columns[0].Name;
}
现在,如何使用rowIdx
在Selected
到DataGridView
设置行的true
属性?
答案 0 :(得分:1)
我建议LinQ获取你的行,然后设置所选的属性:
DataGridViewRow searchedRow = (from row in dgData.rows
where row.Cells[0].value == rowIdx
select row).FirstOrDefault();
if(searchedRow != null)
searchedRow.Selected = true;
检索行的另一个解决方案(使用Lambda):
searchedRow = dgData.rows.Cast<DataGridViewRow>()
.FirstOrDefault(row => row.Cells[0].value == rowIdx);
或者如果你不需要对Row
做任何其他事情,你可以选择:
dgData.rows.Cast<DataGridViewRow>()
.FirstOrDefault(row => row.Cells[0].value == rowIdx)
.Selected = true