Установить выбранную строку автоматически после удаления

У меня есть представление сетки dev-express с данными в виде строк и столбцов внутри него. Я реализовал функцию удаления, теперь я хочу, чтобы, если пользователь удаляет строку, элемент управления автоматически устанавливал строку, предшествующую ей, как сфокусированную строку, и пользователь мог удалить ее снова, не выбирая строку повторно.

Как я могу установить focusRow автоматически....


person rehan88    schedule 08.08.2011    source источник


Ответы (2)


Вызовите этот метод после удаления элемента.

    public void SelectLastVisibleRow()
    {
        if (gridControl.VisibleRowCount > 1)
        {
            gridControl.View.BeginSelection();
            gridControl.View.ClearSelection();
            gridControl.View.SelectRow(gridControl.VisibleRowCount - 1);
            gridControl.View.MoveFocusedRow(gridControl.VisibleRowCount - 1);
            gridControl.View.EndSelection();
        }
    }

Надеюсь, это поможет.

Новая версия:

gridControl1.View.FocusedRowHandle = gridControl.VisibleRowCount - 1

Получение выбранных строк:

((TableView)gridControlSearchResults.View).SelectedRows
person Willem    schedule 15.08.2011
comment
BeginSelection(), ClearSelection() и другие методы после View не находятся внутри Dev-Express Grid Control. Он показывает ошибку.... - person rehan88; 16.08.2011
comment
Тогда вы должны быть на последней версии. Используйте это: gridControl1.View.FocusedRowHandle = gridControl.VisibleRowCount - 1; - person Willem; 16.08.2011
comment
Да... это довольно близко к тому, что я хотел... я получил то, что последовал вашему коду и немного изменил его. Просто используйте VisibleRowCount вместо VisibleRowCount-1, поскольку последний автоматически фокусирует последний узел. Но вот еще одна вещь, связанная с той же концепцией: если я выбрал 3 строки сразу и попытаюсь удалить их, я всегда получаю последний выбор в качестве сфокусированной строки, например. если я выбрал строки с индексом 4,5,6 .. FocusedRow - это 6-я строка, а не все три из них, как я их выбрал. Я хочу получить значение каждой сфокусированной строки при множественном выборе... - person rehan88; 17.08.2011
comment
Сфокусированная строка всегда будет последней выбранной строкой, независимо от того, выбрали ли вы 10 строк. Если вам нужно значение выбранных вами строк, вам придется перебрать все выбранные вами строки. - person Willem; 17.08.2011
comment
Используйте этот код для получения выбранных строк: ((TableView)gridControl1.View).SelectedRows Или, что еще лучше, привяжите выбранные строки: SelectedRowsSource={Binding Selection} - person Willem; 17.08.2011
comment
Да, я понял вашу точку зрения... Но как мне собрать выбранные строки... Я имею в виду, что у меня есть класс FileData, поэтому ((TableView)gridControl1.View).SelectedRows даст мне коллекцию строк типа FileData. Я хочу хранить эти строки одну за другой в каком-то словаре. - person rehan88; 17.08.2011
comment
Хорошо. Теперь я заработал, SelectedRowsCollection src= ((TableView)GridControl.View).SelectedRows; и после этого файла foreach я делаю FileData file = src[i] as FileData; Спасибо за помощь .. - person rehan88; 17.08.2011

Это предыдущий ряд;

        private void backgroundWorkerDelete_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        try
        {
            progress1.Visible = false;

            gridView1.GetFocusedDataRow().Delete();

            gridView1.FocusedRowHandle = gridView1.FocusedRowHandle - 1;
        }
        catch (Exception ex)
        {
            logop.DataErors(ex.Message, "backgroundWorkerDelete_RunWorkerCompleted", "object", this.Name);
        }

    }

С уважением

person Malik Hakyemez    schedule 05.07.2015