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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.08.2005, 10:37   #1  
Dymm is offline
Dymm
Участник
 
27 / 10 (1) +
Регистрация: 09.08.2005
Адрес: Днепропетровск
Basics: обновление отдельного поля в гриде
Вопрос новичка.
Ситуация такая: есть грид, в нем 2 поля из одного источника данных.
Поля вида ID, Name. Поле ID выбирается из lookup-формы. Хотелось бы чтоб сразу после выбора ID в поле Name записывалось имя, соответствующее данному ID.
Пока что делаю DS.research() в методе modified поля ID, но это кажется нелогичным и к тому же возникают дополнительные неудобства..
Подскажите плз. что нужно сделать...
Старый 10.08.2005, 10:59   #2  
Dymm is offline
Dymm
Участник
 
27 / 10 (1) +
Регистрация: 09.08.2005
Адрес: Днепропетровск
полазив по форуму и посмотрев отвлеченные темы сделал следующим образом:

PHP код:
    BDI_Charges_DS.write();
    
cur.data(BDI_Charges);
    
BDI_Charges_DS.research();
    
BDI_Charges_DS.findRecord(cur); 
что убрало проблему с тем, что новая запись перемещалась вниз грида, а активной становилась какая-то другая..
Однако продолжает мучать вопрос - неужели нельзя сделать что-нибудь более экономичное по ресурсам, чем перечитывание всего датасорса?
Старый 10.08.2005, 11:10   #3  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
самое простое делаешь на своей таблице статический метод:


static Name GetMyName( FieldId _FieldId)
{
MyTable myTable;
;
return (select myTable where myTable.FieldId == _FieldId).MyName;

}


и бросаешь его на грид, так помоему большинство делает
Старый 10.08.2005, 11:34   #5  
Dymm is offline
Dymm
Участник
 
27 / 10 (1) +
Регистрация: 09.08.2005
Адрес: Днепропетровск
Цитата:
Изначально опубликовано Антон Солдатов
BDI_Charges_DS.refreshEx(-1)
В методе modified видимого эффекта не приносит... да и вообще, не могли бы Вы объяснить смысл этого выражения?? Буду очень признателен
Старый 10.08.2005, 11:40   #6  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
сорри я не понял вопроса, я думал вопрос про отображение
Старый 10.08.2005, 11:42   #7  
Dymm is offline
Dymm
Участник
 
27 / 10 (1) +
Регистрация: 09.08.2005
Адрес: Днепропетровск
Цитата:
Изначально опубликовано Pustik
самое простое делаешь на своей таблице статический метод:
...
А можно поконкретнее, куда его кидать на грид?? и откуда передавать параметр?

По-моему, тут другая ситуация: датасорс грида - другая таблица, в ней хранятся ID затраты и различная дополнительная информация. Дело в том, что хочется на гриде выводить не ID, а наименование затраты, которое хранится в BDI_ChargeCodes(ID,Name).
Т.о. я выбираю ID при помощи lookup и хочу чтоб в StringEdit на гриде отобразилось наименование. соответствующее этому ID. \
Проблема именно в мгновенном отображении. если я закрою и открою форму (соответственно, перечитается датасорс) то для всех имеющихся записей наименования будут корректными..
Старый 10.08.2005, 11:46   #8  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
дак все-таки вопрос про отображение? сейчас все опишу...
Старый 10.08.2005, 12:02   #9  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
создаешь на этой таблице BDI_ChargeCodes(ID,Name) метод :


static Name GetMyName( Id _Id)
{
BDI_ChargeCodes BDI_ChargeCodes
;
return (select BDI_ChargeCodes where BDI_ChargeCodes.id == _Id).Name

}

далее просто мышкой его хватаешь и несешь в свой грид.
Это будет метод который просто отобразит тебе название соответствующее твоему ID

А если у тебя STRINGEDIT привязанное к датасоурсу то :

1) поставь свойство у всех элементов формы (ID,String) AutoDeclaration = Yes
к примеру они у тебя называются MYID , MYSTRINGEDIT

2) в методе модифайд ID элемента напиши пишешь следующее :
MYSTRINGEDIT.text(BDI_ChargeCodes::GetMyName(MYID.value))
Старый 10.08.2005, 12:23   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Еще посмотрите как сделано отображение(выбора) Контактного лица в форме поставщиков - Контакты - помоему это как раз то что вы ищите. Там прячется ID и отображается только Имя
Старый 10.08.2005, 12:24   #11  
Dymm is offline
Dymm
Участник
 
27 / 10 (1) +
Регистрация: 09.08.2005
Адрес: Днепропетровск
Pustik, огромное спасибо. первый метод подошел..
Есть еще один вопрос по этой теме: я очевидно не совсем понимаю концепцию дата-методов: откуда берется параметр Id _Id, передаваемый ему??
Старый 10.08.2005, 12:32   #12  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Изначально опубликовано Dymm
...

датасорс грида - другая таблица, ..
вот на этой другой таблице делаете метод

display Name GetMyName()
{
return BDI_ChargeCodes::GetMyName(this.ID))
}

и тащите его мышкой на свой грид.
Старый 10.08.2005, 12:44   #13  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Изначально опубликовано Dymm
[B] Есть еще один вопрос по этой теме: я очевидно не совсем понимаю концепцию дата-методов: откуда берется параметр Id _Id, передаваемый ему??

На самом деле правильно бы было где я написал чуть выше. Там Id передается через This.Id .

А еще лучше посмотрите как организован метод Find на таблицах , имеющих статус справочников. Например на таблице InventTable. И посмотрите как на других формах выводится наименование номенклатуры, используя этот метод. Тот вариант что выше, будет возвращать только "Название".
Старый 10.08.2005, 12:49   #14  
Dymm is offline
Dymm
Участник
 
27 / 10 (1) +
Регистрация: 09.08.2005
Адрес: Днепропетровск
Цитата:
Изначально опубликовано Pustik

На самом деле правильно бы было где я написал чуть выше. Там Id передается через This.Id .
Самое интересное, что сработал именно последний вариант, то есть с передачей параметра и без использования метода modified. Так что вопрос по поводу параметра остается открытым...

А с find и display-методом я тоже попробовал. основываясь на Контактах в форме поставщиков.. не заработало(
Старый 10.08.2005, 14:08   #15  
Dymm is offline
Dymm
Участник
 
27 / 10 (1) +
Регистрация: 09.08.2005
Адрес: Днепропетровск
Кстати, таки не сработало... потому что тогда поля Name у всех записай начинают отображать имя для кода текущей записи..

Если я делаю display-метод на таблице (при помощи find) данные для существующих записей отображаются корректно, вся проблема в отображении наименования для ДОБАВЛЯЕМОЙ записи.. Следовательно вопрос перефразируется в "как вызвать display-метод для поля из метода modified другого поля?"
Старый 10.08.2005, 14:20   #16  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Ну так тяжело понять почему у вас не работает; и что именно работает, а что нет.

Попробуйте выложить проект в упрощенной форме : таблица BDI_ChargeCodes,
ваша форма( желательно только грид на ней ) , и если надо таблицы датасоурса этой формы.


Я посмотрю и постараюсь вам помочь.
Старый 10.08.2005, 14:41   #17  
Dymm is offline
Dymm
Участник
 
27 / 10 (1) +
Регистрация: 09.08.2005
Адрес: Днепропетровск
экспортировал все что есть (его там немного)...
Если подскажете что делать - буду крайне благодарен...
Вложения
Тип файла: rar bdi_chargecodes.rar (4.5 Кб, 97 просмотров)
Старый 10.08.2005, 14:46   #18  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
хехе еще вариант можно такой использовать в modified поля ID пишешь

BDI_Charges_DS.write()


произойдет запись этой строчки и метод find отобразит корректно название.

Но это только для частных случаев, если не возникнет никаких ошибок. Т.е. это просто вариант. Мы в некоторых ситуациях это дело используем.
Старый 10.08.2005, 15:07   #19  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
1) Создал новую форму
2) Убрал из грида лишние поля(чтобы легче было разобраться) и лишний датасоурс
3) И кстати убрал метод лукап (он не работает не знаю почему) ))
4)Написал дисплей метод на вашей таблице значений, bdi_charge по моему
5)Перенес этот метод в грид.
6)Все


Вложения
Тип файла: xpo bdi.xpo (87.5 Кб, 296 просмотров)
Старый 10.08.2005, 15:37   #20  
Dymm is offline
Dymm
Участник
 
27 / 10 (1) +
Регистрация: 09.08.2005
Адрес: Днепропетровск
да уж. спасибо.. я тоже уже разобрался.. просто дисплей-метод у меня почему-то был объявлен не на BDI_Charges, являющейся датасорсом грида, а на BDI_ChargeCodes )
Спасибо за участие, ситуация проясняется...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
обновление поля в заданной таблице Eldar9x DAX: Программирование 7 13.03.2009 15:32
Обновление поля с определённым типом во всех таблицах. Corel DAX: Программирование 1 20.12.2008 13:37
Не получается закрыть видимость поля в гриде для группы egorych DAX: Администрирование 1 28.02.2007 11:07
Lookup поля в Гриде NeveB DAX: Программирование 1 10.12.2003 12:18
Обновление данных в гриде Dimitry DAX: Программирование 2 16.07.2003 12:54

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:30.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.