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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.06.2006, 12:28   #1  
PavelSR is offline
PavelSR
Участник
 
98 / 10 (1) +
Регистрация: 25.05.2006
Display метод на форме
Создаю дисплей метод на форме:
Код:
display InventQty pQtyOrdered()
{
   return SalesLine.QtyOrdered;
}
Здесь SalesLine - источник данных формы.
Связал его с контролом в Grid, получаю одинаковые значения поля во всех строка на форме... что не так? Видимо
Код:
SalesLine.QtyOrdered
есть значение поля в текущей записи...? Тогда как мне сделать правильно?
Старый 01.06.2006, 12:35   #2  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Читайте внимательнее мануал, синтаксис display-методов на форме.

display InventQty pQtyOrdered(SalesLine _salesLine)
{
return _salesLine.QtyOrdered;
}
__________________
Андрей.
Старый 01.06.2006, 12:41   #3  
LEX is offline
LEX
NavAx
Аватар для LEX
NavAx Club
 
33 / 12 (1) ++
Регистрация: 06.04.2004
Еще можете разместить этот метод прямо на таблице, тогда будет возможность использовать его и на других формах.
Старый 01.06.2006, 12:41   #4  
PavelSR is offline
PavelSR
Участник
 
98 / 10 (1) +
Регистрация: 25.05.2006
Цитата:
Сообщение от Dron AKA andy
Читайте внимательнее мануал, синтаксис display-методов на форме.

display InventQty pQtyOrdered(SalesLine _salesLine)
{
return _salesLine.QtyOrdered;
}
Да... но мне казалось, что параметры передаются в дисплей метоы только если этот дисплей метод на источнике данных!!!
Кстати, указанный вариант также не работает...
Старый 01.06.2006, 12:45   #5  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Так его и надо делать на источнике данных, или я что-то не понял?
По какой строке SalesLine Вы хотите получить данные, если делаете его на форме, а не на источнике?
__________________
Андрей.
Старый 01.06.2006, 12:45   #6  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
А почему просто не прописать в свойствах контрола таблицу и её поле? и поставить AllowEdit в No?
Старый 01.06.2006, 12:45   #7  
PavelSR is offline
PavelSR
Участник
 
98 / 10 (1) +
Регистрация: 25.05.2006
Цитата:
Сообщение от LEX
Еще можете разместить этот метод прямо на таблице, тогда будет возможность использовать его и на других формах.
Нет... о преимуществе использования дисплей методов на таблицах мне известны... я хочу понять в чем моя ошибка...
Старый 01.06.2006, 12:52   #8  
Gad is offline
Gad
Участник
 
136 / 18 (1) ++
Регистрация: 21.05.2003
Адрес: Москва
Ошибка в том, что если вы пытаетесь добавить дисплей метод в grid, то использовать следует метод на датасорсе, а метод на форме с табличной перемнной salesLine будет во всех строках Grid-a отражать значение из выделенной в данный момент строки.
Старый 01.06.2006, 12:53   #9  
PavelSR is offline
PavelSR
Участник
 
98 / 10 (1) +
Регистрация: 25.05.2006
Цитата:
Сообщение от Dron AKA andy
Так его и надо делать на источнике данных, или я что-то не понял?
Меня интерисует создание дисплей метода в методах формы...
Цитата:
Сообщение от Dron AKA andy
По какой строке SalesLine Вы хотите получить данные, если делаете его на форме, а не на источнике?
На форме я его делаю для того, чтобы сделать кэширование в ручную (с использованием класса Map)....
Старый 01.06.2006, 12:54   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Thumbs up
Ошибка в том, что вне зависимости от такого в каком месте формы вы напишите display-method, если вы будете обращаться к датасорсу по имени (SalesLine) - то будете всегда получать текущую выбранную строку _ (так оно и должно работать)
Поэтому при написании дисплей методов на форме - их необходимо писать на датасорсе, и передавать параметром строку SalesLine - это будет прорисовываемая в данный момент строка - и сразу получите разные значения для строк.

А если писать на таблице, то вообще проблем не будет.

Успехов
За это сообщение автора поблагодарили: PavelSR (1).
Старый 01.06.2006, 12:55   #11  
Gad is offline
Gad
Участник
 
136 / 18 (1) ++
Регистрация: 21.05.2003
Адрес: Москва
Руководство разработчика:
"Note
You must use display on a form data source method when the return value is to be shown on a grid control."
Старый 01.06.2006, 13:00   #12  
Gad is offline
Gad
Участник
 
136 / 18 (1) ++
Регистрация: 21.05.2003
Адрес: Москва
Цитата:
Сообщение от PavelSR
На форме я его делаю для того, чтобы сделать кэширование в ручную (с использованием класса Map)....
Если используется "ручное" кэширование, то зачем вам переменная salesLine для вывода значения? Если есть это кэширование (не понял что за зверь), то нужно наверное данные из Map и читать иначе зачем он тогда нужен?
Старый 01.06.2006, 13:10   #13  
PavelSR is offline
PavelSR
Участник
 
98 / 10 (1) +
Регистрация: 25.05.2006
Цитата:
Сообщение от Gad
Если используется "ручное" кэширование, то зачем вам переменная salesLine для вывода значения? Если есть это кэширование (не понял что за зверь), то нужно наверное данные из Map и читать иначе зачем он тогда нужен?
Прежде чем начать разбираться с кэшированием хочу понять почему не работает дисплей метод
Старый 01.06.2006, 13:16   #14  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Тож говорю - переменная salesLine ссылается на активную строку грида. Всегда. Для каждой прорисовывоемой строки. Соответственно и значения все одинаковые.
И другого и быть не может.
Старый 01.06.2006, 13:36   #15  
Gad is offline
Gad
Участник
 
136 / 18 (1) ++
Регистрация: 21.05.2003
Адрес: Москва
Цитата:
Сообщение от PavelSR
Кстати, указанный вариант также не работает...
Кстати, если указанный вариант тоже не работает, может дело не в дисплей методе, а в том, что например на контроле кроме поля DataMethod, не заполнено поле DataSourse, которое для метода на форме заполнять не надо, а вот для метода на датасорсе очень даже надо.
Старый 01.06.2006, 13:50   #16  
PavelSR is offline
PavelSR
Участник
 
98 / 10 (1) +
Регистрация: 25.05.2006
Lightbulb
Цитата:
Сообщение от Gad
Кстати, если указанный вариант тоже не работает, может дело не в дисплей методе, а в том, что например на контроле кроме поля DataMethod, не заполнено поле DataSourse, которое для метода на форме заполнять не надо, а вот для метода на датасорсе очень даже надо.
Нет... со своей проблемой я разобрался... дело действительно было в том, что я зря пытался сделать дисплей метод в методах формы. Перенеся его в источник данных указанная проблема исчезла... и ручное кэширование удалось благополучно завершить
Отдельное спасибо kashperuk за подробные комментарии!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Grid и display-метод Russland DAX: Программирование 20 09.04.2007 09:25
display-метод Pavel Pustovalov DAX: Программирование 9 21.03.2006 10:03
Можно ли в display методе узнать для какого FormControl'а этот метод вызван? Dudnik Anton DAX: Программирование 3 01.02.2006 12:22
display метод с параметром Андре DAX: Программирование 5 11.01.2006 19:04
display метод на форме Shirmin Oleg DAX: Программирование 11 13.07.2004 16:58
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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