private void SelectGridItem(CustomGridControl grid) { if (grid == null) { return; } grid.UnselectAll(); var model = GetModel(); if (model == null || model.EditValue == null) { return; } var itemsSource = grid.ItemsSource as IList; if (itemsSource == null) { return; } Func <object, string, WMSBusinessObject, bool> compareFunc = (val, valMember, row) => { if (row == null) { return(false); } if (string.IsNullOrEmpty(valMember)) { return(val.Equals(row.GetKey())); } return(val.Equals(row.GetProperty(valMember))); }; try { grid.BeginSelection(); var index = -1; for (var i = 0; i < grid.RowsCount; i++) { var obj = grid.GetRow(i) as WMSBusinessObject; if (compareFunc(model.EditValue, model.ValueMember, obj)) { index = i; break; } } if (index < 0) { return; } grid.SelectItem(index); var tableView = grid.View as TableView; if (tableView != null) { tableView.FocusedRowHandle = index; tableView.MoveFocusedRow(tableView.FocusedRowHandle); } } finally { grid.EndSelection(); } }
private void SelectGridItem(CustomGridControl grid) { if (grid == null) { return; } var selectionItems = grid.SelectedItems; var itemsSource = grid.ItemsSource as IList; if (itemsSource == null || selectionItems == null) { return; } var tableView = grid.View as TableView; if (tableView == null) { return; } // если ничего не выбрано - нужно сбрасывать focus (в противном случае при сортировках записи скачут) if (selectionItems.Count == 0) { var mv = DataContext as IListViewModel; if (mv != null && mv.IsSelectedFirstItem) { grid.UnselectAll(); grid.SelectItem(0); MoveFocusedRow(tableView, 0); return; } tableView.FocusedRowHandle = -1; return; } try { grid.BeginSelection(); grid.UnselectAll(); foreach (var item in selectionItems) { var ikh = item as IKeyHandler; if (ikh == null) { continue; } var index = grid.IndexOf(ikh.GetKey()); if (index < 0) { continue; } grid.SelectItem(index); MoveFocusedRow(tableView, index); } } finally { grid.EndSelection(); } }