Перейти к содержимому

Фотография

Focus в Devexpress Grid


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 anagramma

anagramma

    Активный участник

  • Members
  • PipPip
  • 87 сообщений
  • Город:Moskow

Отправлено 05 декабря 2011 - 10:21

TC 7.52
приложение на .Net
DevExpress компоненты переделанные под свои нужды.

Проблема в следующем - в таблице нужно найти строку и встать на ней, для последующего вызова контекстного меню (открывает окно редактирования)


	'cHandl  -хэндл таблицы
	Set View = cHandl.MainView 

	View.DataSource.Sort = sColumn(0)
	First = View.DataSource.Find (sValue(0)) 


		Set cHandl.FocusedView.FocusedColumn = oColumn(0) ' установка фокуса на колонку oColumn(0)  - объект колонка
                View.ViewController.FocusedRow = First  ' выделение нужной строки


Вобщем дело в том, что фокус устанавливается как-бы правильно и визуально вроде все Ок, но дело в том, что как только выполняется действие в таблице в нашем случае вызов контекстного меню, то оно вызывается от другой строки. Т.е. получилось наверное что DataSource отсортировался(индексы перестроились) , а в таблице реально нет.

Подскажите как быть и куда копать и чего нехватает. Может вообще так не надо? =)
  • 0

#2 modbear

modbear

    Специалист

  • Members
  • PipPipPipPipPip
  • 548 сообщений

Отправлено 05 декабря 2011 - 11:21

Попробуйте в проектных настройках Object Mapping ассоциировать класс вашего грида с соответствующим DX гридом. Тогда для работы с гридом можно будет использовать стандартные TestComplete'овские методы, например:
row = grid.FindRow("Column", value)
grid.ClickCell("Column", row)

  • 0

#3 anagramma

anagramma

    Активный участник

  • Members
  • PipPip
  • 87 сообщений
  • Город:Moskow

Отправлено 09 декабря 2011 - 09:19

Попробуйте в проектных настройках Object Mapping ассоциировать класс вашего грида с соответствующим DX гридом. Тогда для работы с гридом можно будет использовать стандартные TestComplete'овские методы, например:

row = grid.FindRow("Column", value)
grid.ClickCell("Column", row)


Спасибо за ответ и совет! попробую, но что-то пока не получилось с массивом поиска т.е. по нескольким значениям.

Ну а с сортировкой никто дело не имел?

У меня просто еще задача не только поиска строки в таблице, но и при ошибке писать какой параметр не найден.
Например пишу вызов функции

SelectCell "m_GroupsGrid","m_IncludedColumn\m_GroupNameColumn","False\Administrators"
первый параметр имя таблицы, потом идут именя колонок в которых искать и вконце искомые значения

в функции проверяется наличие колонок, а потом ищутся значения в циклах. т.е. пробегаю по первой колонке и при нахождении подходящего значения ищу во второй колонке тойже строки второе входное значение. таким образом я могу вывести сообщение в конкретной позиции ошибки.

Сортировка , как я писал в первом посте, позволяет вразы ускорить поиск

View.DataSource.Sort = sColumn(0) 
First = View.DataSource.Find (sValue(0))


т.к. после этого данные отсортированы по первой колонке и нужные значения идут подряд и первая искомая строка найдена методом Find.

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

Неужели никто не сталкивался с подобным? я имею ввиду то, что индексы после Sort как-то странно сбиваются.
  • 0

#4 anagramma

anagramma

    Активный участник

  • Members
  • PipPip
  • 87 сообщений
  • Город:Moskow

Отправлено 22 декабря 2011 - 09:54

Вобщем кому интересно ...
остановился на таком варианте:
в самом конце устанавливаю фокус на нужную мне ячейку таким образом



		View.DataSource.ResetSort ' отмена сортировки
                if IsEmpty(View.DataSource.Item(j).Row.rowID) then ' не всегда есть Item(j) т.к. у меня универсальная функция для разных таблиц
                  View.ViewController.Set_FocusedRow (j)
                else
                  View.ViewController.Set_FocusedRow (aqConvert.VarToInt(View.DataSource.Item(j).Row.rowID)-1)
		  endif

в переменной j перебираются строки таблицы
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных