根据名称以编程方式设置XAM Datagrid的选定项

Use*_*r10 2 c# wpf datagrid infragistics selecteditem

有点像这样的东西.

private void SearchResult(string nameOfBean)
{
    foreach (Record VARIABLE in mbeanDataGrid.Records)
    {
        if (VARIABLE.ToString().Contains(nameOfBean))
        {
            ((VARIABLE as DataRecord).DataItem as Record).IsSelected = true;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我知道这种语法是错误的,我正在寻找一些建议!几乎可以通过代码选择项目(就像你点击它一样).根据它的名字.

pun*_*r76 6

您可以使用以下代码选择记录(如果您想要选择多个记录)

private void ShowSearchResult(string searchStr)
{
    var recordsToSelect = new List<Record>();
    foreach (Record rec in xamGrid.Records) {
      var yourData = rec is DataRecord ? ((DataRecord)rec).DataItem as YourDataClass : null;
      if (yourData != null && yourData.MatchWithSearchStr(searchStr)) {
        recordsToSelect.Add(rec);
      }
    }
    xamGrid.SelectedItems.Records.Clear();
    // you need linq -> .ToArray()
    xamGrid.SelectedItems.Records.AddRange(recordsToSelect.ToArray(), false, true);
}
Run Code Online (Sandbox Code Playgroud)

或者如果您只想激活并选择一条记录,那么请执行此操作

private void ShowSearchResult(string searchStr)
{
    foreach (Record rec in xamGrid.Records) {
      var yourData = rec is DataRecord ? ((DataRecord)rec).DataItem as YourDataClass : null;
      if (yourData != null && yourData.MatchWithSearchStr(searchStr)) {
        xamGrid.ActiveRecord = rec;
        // don't know if you really need this 
        xamGrid.ActiveRecord.IsSelected = true;
        break;
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助