使用两个组合框更改datagrid选定项

时间:2013-09-04 09:18:42

标签: c# linq datagrid combobox

我有一个包含用户信息的数据网格

  UserName    UserID    UserHobby

我有一个comboBox链接到上面的每个列。 如果用户单独选择任何一个框,它会将选定的数据网格行带到匹配行的第一个出现位置。但是,例如,如果用户选择值“Bryan”是UserName和业余爱好“golf”,我希望所选单元格移动到存在两个值的行。

目前,我的第二个组合框的selectedIndexChanged代码如下:

DataGrid.SelectedRows = 
          DataGrid.SelectedRows.Where(
          x =>x.Row.Field<string>(DataGrid.Text)
          .Contains(HobbyCombobox.Text));

然而,这不起作用,任何人都会有类似的方法或解决方案

根据答案的反馈,我的代码现在看起来像这样

  var query = DataGrid.SelectedRows.Cast<DataGridViewRow>()
                            .Where(x => x.Row.Field<string> (DataGrid.Text).Contains(comboBox10.Text));
          DataGrid.DataSource = query.ToList();
          DataGrid.Refresh()

然而,这会在x.Row

上引发错误
            System.Windows.Forms.DataGridViewRow' does not contain a definition for  'Row' and no extension method 'Row' accepting a first argument of type  'System.Windows.Forms.DataGridViewRow'

1 个答案:

答案 0 :(得分:0)

DataGrid.SelectedRows是只读的。 你需要重新绑定数据源。

var query = DataGrid.SelectedRows.Cast<DataGridViewRow>()
                    .Where(x =>x.Row.Field<string>(DataGrid.Text).Contains(HobbyCombobox.Text));
DataGrid.DataSource=query;
DataGrid.Refresh();