1

我有一个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;
}

现在,如何使用 to 在torowIdx中设置行的Selected属性?DataGridViewtrue

4

1 回答 1

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
于 2013-04-24T15:12:13.807 回答