以编程方式在DataGridView中选择一行

时间:2011-06-07 12:36:27

标签: c# .net winforms datagridview

如何在运行时以编程方式选择DataGridView中的特定行范围?

8 个答案:

答案 0 :(得分:101)

未经测试,但我认为您可以执行以下操作:

dataGrid.Rows[index].Selected = true;

或者您可以执行以下操作(但是再次:未经测试):

dataGrid.SelectedRows.Clear();
foreach(DataGridViewRow row in dataGrid.Rows)
{
    if(YOUR CONDITION)
       row.Selected = true;
}

答案 1 :(得分:26)

在Visual Basic中,执行此操作以选择DataGridView中的行;所选行将以突出显示的颜色显示,但请注意光标位置不会更改:

Grid.Rows(0).Selected = True

这样做会改变光标的位置:

Grid.CurrentCell = Grid.Rows(0).Cells(0)

组合上面的行将定位光标并选择一行。这是在DataGridView中聚焦和选择行的标准程序:

Grid.CurrentCell = Grid.Rows(0).Cells(0)
Grid.Rows(0).Selected = True

答案 2 :(得分:11)

DataGridView.Rows
    .OfType<DataGridViewRow>()
     .Where(x => (int)x.Cells["Id"].Value == pId)
     .ToArray<DataGridViewRow>()[0]
     .Selected = true;

答案 3 :(得分:2)

试试这个:

enforceUpdateFields()

答案 4 :(得分:0)

如果您有数据源,可以使用Select方法: http://msdn.microsoft.com/en-us/library/b51xae2y%28v=vs.71%29.aspx

如果您的数据源中有对象,请使用linq

答案 5 :(得分:0)

 <GridViewName>.ClearSelection(); ----------------------------------------------------1
 foreach(var item in itemList) -------------------------------------------------------2
 {
    rowHandle =<GridViewName>.LocateByValue("UniqueProperty_Name", item.unique_id );--3
    if (rowHandle != GridControl.InvalidRowHandle)------------------------------------4
    {
        <GridViewName>.SelectRow(rowHandle);------------------------------------ -----5
    }
  }
  1. 清除之前的所有选择。
  2. 循环遍历需要在网格中选择的行。
  3. 从网格中获取行句柄(请注意,此处网格已使用新行更新)
  4. 检查行句柄是否有效。
  5. 当有效行句柄然后选择它时。
  6. 其中itemList是要在网格视图中选择的行列表。

答案 6 :(得分:-1)

在加载时设置DataGridView的Selected行时,请考虑在DataBindingComplete事件中进行处理,因为默认情况下可以覆盖它。

答案 7 :(得分:-1)

尝试一下:

DataGridViewRow row = dataGridView1.Rows[index row you want];
dataGridView1.CurrentRow = row;

希望有帮助!