Beispiel #1
0
        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();
            }
        }