17.02.2006, 11:41 | #1 |
Участник
|
Установка Grid на нужную строку при открытии формы
X++: void run() { FormDataSource _Browse_Grid_ds = ( ).dataSource(); Common record; // так работает if( _Browse_Grid_ds.first() ){ do { record = _Browse_Grid_ds.cursor(); if( record.(eField_Id_Id_) == 10 ) break; } while( _Browse_Grid_ds.next() ); } // а так нет _finded = _Browse_Grid_ds.findValue( eField_Id_Id_, QueryValue(10) ); } |
|
17.02.2006, 11:48 | #2 |
Участник
|
встречный вопрос, korvin, Вы знаете, что делает предложенный метод?
Цитата:
Сообщение от korvin
void run()
{ _finded = _Browse_Grid_ds.findValue( eField_Id_Id_, QueryValue(10) ); } |
|
17.02.2006, 12:11 | #3 |
Участник
|
Судя по иронии mit`a метод не смещает курсор, а только устанавливает наличие значения в выборке. Но я бы не стал писать сюда просто так, потому что findRecord то же не устанавливает. К сожалению мои скромные познания ограничиваются только этими методами по поиску и установке курсора, поэтому прошу меня просто ткнуть носом а не упражняться в остроумии.
|
|
17.02.2006, 12:17 | #4 |
Участник
|
дело не в иронии, и тем более форум не для острот.
Вы вызываете findValue(), значит ожидаете получить какой то результат от метода? |
|
17.02.2006, 12:26 | #5 |
Участник
|
Я не вызываю findValue а использую цикл, потому что findValue не устанавливает Grid на нужную запись, findValue всё время возвращает false и Grid остаётся на первой записи, хотя запись с таким значением есть в выборке.
|
|
17.02.2006, 12:55 | #6 |
Участник
|
Данные в источнике получены через query c группировкой?
Если да, то findValue или findRecord не работают. |
|
17.02.2006, 13:03 | #7 |
Участник
|
Попробуй другой механизм:
Код: element.args().lookupField(eField_Id_Id_); element.args().lookupValue(QueryValue(10)); Browse_Grid_ds.research(); |
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
17.02.2006, 13:06 | #8 |
Участник
|
привожу метод, который написал для формы SalesTable.
вызов повесил на кнопку в форме. отрабатывает прекрасно и по выборке и без выборки Код: void MyFindRec() { SalesTable _sales; ; _sales = SalesTable::find("MySalesId"); SalesTable_ds.findRecord(_sales); } |
|
17.02.2006, 13:11 | #9 |
Участник
|
Вопрос к dn
Что ты имееш в виду под словом группировка?
Есть только пара range по тому полю по которому вызываю findValue |
|
17.02.2006, 13:15 | #10 |
Участник
|
Вопрос к mit
Ваш метод SalesTable::find выполняет дополнительный запрос к таблице? Если да, то это не то что мне нужно.
|
|
17.02.2006, 13:20 | #11 |
Участник
|
Цитата:
Сообщение от korvin
Ваш метод SalesTable::find выполняет дополнительный запрос к таблице? Если да, то это не то что мне нужно.
|
|
17.02.2006, 13:20 | #12 |
Участник
|
2 dn
Ну тогда уж X++: Browse_Grid_ds.ExecuteQuery(); А правильнее выставлять в Init() формы или перед super() в Run() - тогда QueryExecute() не нужен. По поводу FindValue() и FindRecord() - они ищут в кэше на клиенте и если нужной записи в нем нет - то фетчает записи с сервера пока не получат удовлетворяющую условию или все записи.
__________________
Axapta v.3.0 sp5 kr2 |
|
17.02.2006, 13:28 | #13 |
Участник
|
Еще такой момент.
Если при вызове формы заполнены lookupField() и lookupValue(), то поиск по findValue(), findRecord() может не найти запись, если значение в lookupValue() больше искомого
__________________
Axapta v.3.0 sp5 kr2 |
|
17.02.2006, 13:46 | #14 |
Участник
|
Вопрос к dn и AndyD
element.args().lookupField(eField_Id_Id_);
element.args().lookupValue(QueryValue(10)); А если у меня на форме несколько датасорсов с одной и той же таблицей, лукапить будет в каком? |
|
17.02.2006, 13:48 | #15 |
Участник
|
Спасибо за согласие mit`у, я всё больше склоняюсь к перебору в цикле, если никто не предложит лучшее решение.
|
|
17.02.2006, 13:48 | #16 |
Участник
|
в главном (тот, который был создан первым)
|
|
17.02.2006, 13:56 | #18 |
Участник
|
Ответ belugin'у
Спасибо за ссылку. Но мне кажется я показал выше что мне надо позиционироваться из кода а не пользователю из меню. К тому же если мне надо позиционировать несколько датасорсов с одинаковой таблицей на разные значения, то это не поможет. Вот так вот.
|
|
17.02.2006, 13:59 | #19 |
Участник
|
Цитата:
Сообщение от korvin
Спасибо за согласие mit`у, я всё больше склоняюсь к перебору в цикле, если никто не предложит лучшее решение.
__________________
Axapta v.3.0 sp5 kr2 |
|
17.02.2006, 14:02 | #20 |
Участник
|
Цитата:
Сообщение от AndyD
У вас много записей в выборке? Если да, то ваша форма будет открываться очень долго если нужная вам запись в конце выборки
|
|
Теги |
ax3.0, курсор, позиционирование, программно |
|
|