Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XtraGrid от DevExpress. На какой строке я ? Определение позиции в таблице 
V
    Опции темы
vlsaf
Дата 29.10.2007, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Есть gridView. (не мелкосовтовский, а от DevExpress)

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

1. Как определить, на в какой позиции (на какой строке) грида находится курсор?
2. Как переместиться на строку N ?

Вопросы элементарные. 
Я тока с этим гридом начал разбираться всерьез smile
PM   Вверх
thomas
Дата 29.10.2007, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 1
Всего: 65



vlsaf, 
Цитата

1. Как определить, на в какой позиции (на какой строке) грида находится курсор?

У MS это CurrentCell
Посмотри подобное у Dеv-вов.
Цитата

2. Как переместиться на строку N ?

У MS есть свойства у DataGridView.CurrentRow.Index 
Просмотри свойства грида от Dev-вов, что они там пишут.

Это сообщение отредактировал(а) thomas - 29.10.2007, 23:05


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
ivashkanet
Дата 30.10.2007, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Если нужно тупо сохранять/загружать то подойдет такое: 
Код
GridView.FocusedRowHandle

Если нужно что-нить посложнее, то у мя есть пример кода (разберешься сам):
Код

            ' поиск выделенной строки
            Dim focusedRowsCount As Integer =GridView.GetSelectedRows().Length
            If focusedRowsCount > 0 Then
                Dim focusedRowNumber As Integer = GridView.GetSelectedRows()(0)
                If focusedRowNumber >= 0 Then
                    Dim row As System.Data.DataRowView = CType(GridView.GetRow(focusedRowNumber), DataRowView)

                    value= row("SOME_COLUMN").ToString()
                End If
            End If

            ' выделение нужной строки
            Dim dataTable As DataTable = CType(GridControl.DataSource, Data.DataTable)
            Dim dataRows As DataRow() = dataTable.Select(String.Format("[SOME_COLUMN]='{0}'", value))

            If dataRows.Length > 0 Then
                Dim rowHandle As Integer = GridView.GetRowHandle(dataTable.Rows.IndexOf(dataRows(0)))
                GridView.FocusedRowHandle = rowHandle
            End If

PM MAIL WWW ICQ   Вверх
vlsaf
Дата 30.10.2007, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Мужики, спасибо! 
PM   Вверх
ivashkanet
Дата 30.10.2007, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Заходи, типа, еще ;-)
PM MAIL WWW ICQ   Вверх
IGV
Дата 25.11.2010, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 1.4.2008

Репутация: нет
Всего: 2



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

row0 (RowState = RowState.Deleted)
row1 (RowState = RowState.Unchanged)
row2 (RowState = RowState.Unchanged)

естественно gridView отображает только 2 строки row1 и row2.
теперь нам нужно установить фокус на строку row1

Используем код:
Код

int dataSourceRowIndex = dataTable.Rows.IndexOf(row1);
int rowHandle = gridView.GetRowHandle(dataSourceRowIndex);
gridView.FocusedRowHandle = rowHandle;

Код

Dim dataSourceRowIndex As Integer = dataTable.Rows.IndexOf(row1)
Dim rowHandle As Integer = gridView.GetRowHandle(dataTable.Rows.IndexOf(dataRows(0)))
gridView.FocusedRowHandle = rowHandle


Метод dataTable.Rows.IndexOf(row1) возвращает 1, что правильно.
Метод gridView.GetRowHandle(dataSourceRowIndex) возвращает тоже 1.
И когда мы пытаемся сфокусироваться на строке получаем фокус на строке row2.

Я так и не понял бага это или что...
В итоге DevExpress предлагает просто искать строку:
http://www.devexpress.com/Support/Center/p/Q182679.aspx

P.S. версия 9.3

Это сообщение отредактировал(а) IGV - 25.11.2010, 15:00
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.