AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.10.2009, 18:09   #1  
dynamax is offline
dynamax
Участник
 
62 / 11 (1) +
Регистрация: 28.09.2009
Фильтр на Datasource в LookUp-форме.
Добрый день.

такой вопрос:

есть Lookup-форма состоящая из двух закладок. Одна закладка с фильтром, другая без оного. На Datasource, который предназначен для фильтроного запроса переписал две методы init() i executeQuery(). Выглядят они так:

X++:
public void init()
{
    Query                   query = new Query();
    QueryBuildRange         qrForInventTable, qrForCatalogGroup;
    QueryBuildDataSource    dsForInventTable, dsForCatalogGroup;
    str                     catalogGroup;
    
    ;
    super();

    catalogGroup = "4";

    dsForInventTable        = query.addDataSource(tablenum(InventTable));
    dsForCatalogGroup       = dsForInventTable.addDataSource(tablenum(GroupRef));
    dsForCatalogGroup.relations(true);
    dsForCatalogGroup.joinMode(JoinMode::InnerJoin);

    
    qrForCatalogGroup       = dsForCatalogGroup.addRange(fieldnum(GroupRef, Catalog));
    qrForCatalogGroup.value(SysQuery::value(catalogGroup));
    this.query(query);
X++:
public void executeQuery()
{
    FormStringControl   callerControlloc;
    InventTable         inventTable;
    ;

    callerControlloc    = SysTableLookup::getCallerStringControl(element.args());
    inventTable         = inventTable::find(callerControlloc.text());

    super();
    
    itemCatalogGroup_DS.findRecord(inventTable);

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

видимо executeQuery() некоректно работает. Если у кого есть идея прошу поделиться. Спасибо.

Последний раз редактировалось dynamax; 08.10.2009 в 18:59.
Старый 08.10.2009, 19:24   #2  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
Объясните на пальцах что вы хотите получить...
спозиционироваться на 2ом гриде?
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy

Последний раз редактировалось ivas; 08.10.2009 в 19:27.
Старый 08.10.2009, 21:15   #3  
dynamax is offline
dynamax
Участник
 
62 / 11 (1) +
Регистрация: 28.09.2009
Цитата:
Сообщение от ivas Посмотреть сообщение
Объясните на пальцах что вы хотите получить...
спозиционироваться на 2ом гриде?
Добрый вечер,

да я хочу спозиционироваться, т.е. если я выбираю строку, чтобы она прописовалась, а не первая строка в гриде.
Старый 09.10.2009, 08:33   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Проблема со своим lookup-ом
Старый 09.10.2009, 11:00   #5  
dynamax is offline
dynamax
Участник
 
62 / 11 (1) +
Регистрация: 28.09.2009
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Спасибо за ответ.

Но в этом посту решение: прописать что-то наподобее: element.selectMode(lookup1_ItemId);

У меня две закладки, одна без фильтра работает нормально т.к. там есть такая строчка : element.selectMode(lookup1_ItemId); Другая закладка с фильтром, поэтому не могу выбрать ничего кроме первой строчки. Т.е когда Lookup закрывается вместо выбранной строчки, стоит первая. Код для DataSource второй закладки выше.

Посмотрел документацию и сделал как рекомендуют, но результата нет хотя после super() прописал: itemCatalog_DS.findRecord(inventTable); вместо itemCatalogGroup_DS.findValue(fieldnum(InventTable, ItemId), callerControl.text());
Старый 09.10.2009, 11:12   #6  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
вот что мне не понравилось:
X++:
itemCatalogGroup_DS.findRecord(inventTable);
вы для поиска в DataSource itemCatalogGroup подкладываете InventTable.
Как я понимаю это разные таблицы, может поэтому не происходит позиционирование на нужной таблице?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 09.10.2009, 11:24   #7  
dynamax is offline
dynamax
Участник
 
62 / 11 (1) +
Регистрация: 28.09.2009
Цитата:
Сообщение от lev Посмотреть сообщение
вот что мне не понравилось:
X++:
itemCatalogGroup_DS.findRecord(inventTable);
вы для поиска в DataSource itemCatalogGroup подкладываете InventTable.
Как я понимаю это разные таблицы, может поэтому не происходит позиционирование на нужной таблице?
У DataSource ItemCatalogGroup в свойстве Table прописана InventTable. Это не корректно?
Старый 09.10.2009, 11:34   #8  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
если в Вашей форме таблица ItemCatalogGroup - это таблица InventTable, то по идее это нормально...
Можно ради теста переименовать вашу таблицу на форме в InventTable, хотя не уверен что это поможет...
Вообще странно, надо ещё подумать...
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
За это сообщение автора поблагодарили: dynamax (1).
Старый 09.10.2009, 11:40   #9  
dynamax is offline
dynamax
Участник
 
62 / 11 (1) +
Регистрация: 28.09.2009
Цитата:
Сообщение от lev Посмотреть сообщение
е
Можно ради теста переименовать вашу таблицу на форме в InventTable, хотя не уверен что это поможет...
Datasource InventCatalogGroup я уже переименововал в InventTable, но к сожалению безрезультатно...
Старый 09.10.2009, 11:41   #10  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от dynamax Посмотреть сообщение
Datasource InventCatalogGroup я уже переименововал в InventTable, но к сожалению безрезультатно...
Я так и думал сейчас у себя попробую похожую форму создать и потестить...
а может вы выложите свою? что бы уже конкретно посмотреть?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 09.10.2009, 11:46   #11  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
начал создавать свою форму и возникло сразу куча вопросов
какая(какие) таблица у Вас отображается в форме в гриде?
на двух вкладках отображаются одни и те же таблицы(таблица)?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 09.10.2009, 11:51   #12  
dynamax is offline
dynamax
Участник
 
62 / 11 (1) +
Регистрация: 28.09.2009
Цитата:
Сообщение от lev Посмотреть сообщение
начал создавать свою форму и возникло сразу куча вопросов
какая(какие) таблица у Вас отображается в форме в гриде?
на двух вкладках отображаются одни и те же таблицы(таблица)?
На одной вкладке все элементы с InventTable, на другой которые отфильтрованы
Старый 09.10.2009, 12:32   #13  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
у Вас видимо аксапта с версией выше 3.0, ваш экспортный файл ко мне не импортится
ладна, будем так пробовать... суть я понял
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 09.10.2009, 12:37   #14  
dynamax is offline
dynamax
Участник
 
62 / 11 (1) +
Регистрация: 28.09.2009
Цитата:
Сообщение от lev Посмотреть сообщение
у Вас видимо аксапта с версией выше 3.0, ваш экспортный файл ко мне не импортится
ладна, будем так пробовать... суть я понял
Да, это верно у меня AX2009.
Старый 09.10.2009, 12:46   #15  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
что заметил, на первой вкладке Вашей формы под названием GridItemCatalogGroup свойство DataSource стоит ItemCatalogGroup, так же у грида на этой вкладке свойство DataSource равно ItemCatalogGroup, однако поля этого грида у вас относяться к другому DataSource, а именно ItemAll.
Это некорректно
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 09.10.2009, 12:47   #16  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
исправьте там у всех полей свойство DataSource на ItemCatalogGroup
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 09.10.2009, 12:59   #17  
dynamax is offline
dynamax
Участник
 
62 / 11 (1) +
Регистрация: 28.09.2009
Цитата:
Сообщение от lev Посмотреть сообщение
что заметил, на первой вкладке Вашей формы под названием GridItemCatalogGroup свойство DataSource стоит ItemCatalogGroup, так же у грида на этой вкладке свойство DataSource равно ItemCatalogGroup, однако поля этого грида у вас относяться к другому DataSource, а именно ItemAll.
Это некорректно
Вот это да!!! Как это закралось не пойму. Все исправил спасибо.

Курсор однако все равно сползает на первую строчку.
Старый 09.10.2009, 13:02   #18  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
а по отладчику не смотрели?
в частности интересен метод executeQuery строчка
X++:
itemCatalogGroup_DS.findRecord(inventTable);
InventTable вообще находится?

p.s. я имею ввиду вот тут
X++:
inventTable         = inventTable::find(callerControlloc.text());
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем

Последний раз редактировалось lev; 09.10.2009 в 13:04.
Старый 09.10.2009, 13:26   #19  
dynamax is offline
dynamax
Участник
 
62 / 11 (1) +
Регистрация: 28.09.2009
Цитата:
Сообщение от lev Посмотреть сообщение
а по отладчику не смотрели?
в частности интересен метод executeQuery строчка
X++:
itemCatalogGroup_DS.findRecord(inventTable);
InventTable вообще находится?

p.s. я имею ввиду вот тут
X++:
inventTable         = inventTable::find(callerControlloc.text());
Как-то странно ведет себя, раз находится (опятъ-же только первый), раз RecId=0...

но после этой строчки: itemCatalogGroup_DS.findRecord(inventTable); находит ItemCatalogGroup но, все время с первым RecId.

видимо эта строка не работает правильно:

X++:
inventTable         = inventTable::find(callerControlloc.text());

Последний раз редактировалось dynamax; 09.10.2009 в 13:31.
Старый 09.10.2009, 13:33   #20  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
в том то и дело что не находится, поэтому встает на первую строку в списке.
у Вас проблема в том, что не известно какую запись искать.
так же не понятно определение поля (ItemId) по которому ведется поиск номенклатуры...
X++:
callerControlloc    = SysTableLookup::getCallerStringControl(element.args());
callerControlloc - сюда что-нибудь присваивается?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Теги
lookup, фильтр, форма

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
изменение LookUp поле на форме SHiSHok DAX: Программирование 15 25.02.2013 13:26
отображение значений query на форме fialka DAX: Программирование 13 31.07.2007 14:31
Динамическое изменение Query() на форме makos DAX: Программирование 22 05.07.2006 16:28
lookup фильтр в произвольной lookup форме 111andrei DAX: Программирование 4 05.10.2005 11:28
Сортировка и/или фильтры в lookup форме - howto. Maximin DAX: Программирование 5 07.06.2005 11:06

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:34.