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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.08.2009, 12:56   #1  
HorrR is offline
HorrR
Участник
 
340 / 30 (2) +++
Регистрация: 18.02.2008
Адрес: Киев
Траблы с Display method"ом
Есть некая поисковая логика по кастомерам. В конце поиска отображается форма с результатом. Датасоурс - CustTable. Результат по сути выполненный квери над этим дэйтасоурсом. В гриде есть поле City - оно замаплено на дисплей метод. Код дисплей метода:
X++:
display AddressCity City()
{
    ;
    if (useDeliveryAddress)
    {
        return Address::find(tablenum(CustTable),CustTable.RecId,AddressType::Delivery).City;
    }
    else
    {
        return CustTable.City;
    }
}
Где useDeliveryAddress - параметр, указывающий на то, что при поиске был выставлен параметр искать по деливери адресу. То есть если пользователь указал в поисковом диалоге город и отметил эту опцию - будут искаться те кастомеры у кого такой город в адресе доставки.

В чем собственно проблема - когда рекорд активен город отображается корректно. Но когда курсор перемещается на другой рекорд значение City в строке грида, потерявшей фокус меняется на значение из другого рекорда, причем зачастую произвольным образом. То на значение из предидущего, то из следующего. Кто что скажет?
__________________
Axapta has seduced me deadly!
Старый 05.08.2009, 13:00   #2  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Надо так, насколько я понимаю (первая же строка):
Цитата:
Сообщение от HorrR Посмотреть сообщение
X++:
display AddressCity City(CustTable _custTable)
{
    ;
    if (useDeliveryAddress)
    {
        return Address::find(tablenum(CustTable), ustTable.RecId,AddressType::Delivery).City;
    }
    else
    {
        return ustTable.City;
    }
}
__________________
Zhirenkov Vitaly

Последний раз редактировалось ZVV; 05.08.2009 в 13:01. Причина: Сорри, в коде тоже надо чуть поменять :)
За это сообщение автора поблагодарили: HorrR (1).
Старый 05.08.2009, 13:04   #3  
HorrR is offline
HorrR
Участник
 
340 / 30 (2) +++
Регистрация: 18.02.2008
Адрес: Киев
Ага, только насколько я понимаю, тогда и
X++:
if (useDeliveryAddress)
    {
        return Address::find(tablenum(CustTable), [B]ustTable.RecId[/B],AddressType::Delivery).City;
    }
    else
    {
        return [B]ustTable.[/B]City;
    }
Да, сейчас конечно проверю, но уверен, что это правильно. Та же ведь бадяга с дисплей опшэном, когда не активный рекорд нужно обрабатывать, а переданный в параметре. И как я не догадался... Спасибо!
__________________
Axapta has seduced me deadly!
Старый 05.08.2009, 13:24   #4  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от HorrR Посмотреть сообщение
Ага, только насколько я понимаю, тогда и ...
Да, конечно, я потом поправился..
__________________
Zhirenkov Vitaly
Старый 05.08.2009, 13:26   #5  
HorrR is offline
HorrR
Участник
 
340 / 30 (2) +++
Регистрация: 18.02.2008
Адрес: Киев
Спасибо, благодарность выслана)
__________________
Axapta has seduced me deadly!
Теги
display метод

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
TwC: Validate access to return value from display/edit method. HorrR DAX: Программирование 10 05.03.2008 12:17
axaptapedia: Display method Blog bot DAX Blogs 0 29.08.2007 16:30
TwC: Validate access to return value from display/edit method. алька DAX: Программирование 3 20.04.2007 14:15
Юзал кто-нить "скидку по оплате" и какие траблы при этом были Hamster DAX: Функционал 0 13.08.2004 16:03
display() method on Grid Control DK DAX: Программирование 5 31.01.2003 22:09

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

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

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