C # Как программно переместить выбор строки в DataGridView - PullRequest
1 голос
/ 21 февраля 2012

Я использую linq2sql, чтобы добавить запись в мое представление данных и обновить сетку. Прямо сейчас после обновления он перемещает выделение строки вверх. Как бы я сказал, чтобы выделить самую последнюю добавленную запись?

Не уверен, поможет ли это, но я включил приведенный ниже код, который я использую, чтобы узнать pk выбранной строки. Как то, что я хотел бы сделать, это отчасти наоборот. Спасибо

        //get selected row index
        int index = this.dataGridView1.CurrentRow.Index;
        //get pk of selected row using index
        string cellValue = dataGridView1["pkColumn", index].Value.ToString();
        //change pk string to int
        int pKey = Int32.Parse(cellValue);

1 Ответ

4 голосов
/ 21 февраля 2012

Если вы заранее знаете, что в любое время добавляется новый элемент, он должен появиться внизу списка, вы можете использовать:

    int index = this.dataGridView1.Rows.Count - 1;
    this.dataGridView1.Rows[index].Selected = true;
    this.dataGridView1.FirstDisplayedScrollingRowIndex = index;

Но, если вы упорядочите список по другому столбцу,вы не получите желаемых результатов.

Я рекомендую вам, это поиск по индексу строки, которому нужно дать выбор, это может быть выполнено с помощью функции, скажем, int SearchRowIndexForPKValue(int pKey), который выполнит поиск значений ячейки столбца, содержащего ваш PK / ID ("pkColumn"), возвращающего индекс строки.Таким образом, приведенный выше код должен выглядеть следующим образом:

    int index =  SearchRowIndexForPKValue(pKey);
    this.dataGridView1.Rows[index].Selected = true;
    this.dataGridView1.FirstDisplayedScrollingRowIndex = index;

РЕДАКТИРОВАТЬ: int SearchRowIndexForPKValue(int pKey) не является существующим встроенным методом DataGridView.Вы должны объявить это и реализовать в своем коде;для тела метода вы можете получить код из этого поста .

...