从DataSource的索引中选择DataGridView中的行

时间:2013-04-24 15:06:27

标签: c# datagridview

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

现在,如何使用rowIdxSelectedDataGridView设置行的true属性?

1 个答案:

答案 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