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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.06.2007, 13:35   #1  
Breeze is offline
Breeze
Участник
 
19 / 10 (1) +
Регистрация: 01.06.2007
Адрес: Омск
checkbox in grid
Приветствую)
Форма InventOnhandItem содержит 3 источника: 2 закрыты для редактирования (ds1,ds2), добавлен еще один, который разрешено редактировать(ds3)
На форме есть Grid (Grid.datasource == ds1), который содержит Group (Group.datasource == ds2), в группу добавлен checkbox (checkbox.datasource = ds3).
Пользователю нужно разрешить менять значение checkbox.Но при указанных свойствах менять не получается
Как вариант можно открыть для редактирования ds1,ds2 и при этом закрыть их поля от редактирования.
Есть ли еще какой-то способ решения проблемы?
__________________
Step by step...
Старый 22.06.2007, 14:04   #2  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,732 / 406 (17) +++++++
Регистрация: 23.03.2006
а добавить checkbox в grid, а не в Group нельзя?
Старый 22.06.2007, 14:07   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
я в таком случае писал код обходящий все поля таблицы и закрывающий от редактирования их на ds
Старый 22.06.2007, 14:33   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Угу. Я тоже. Даже метод для этого есть специальный в классе Global:

X++:
static void allowEditFieldsOnFormDs_W(FormDataSource _dataSource, boolean _allowEdit)
{
    DictTable   dictTable;
    DictField   dictField;
    int         cx, idx;
    ;

    dictTable = new DictTable(_dataSource.table());

    for(cx = 1; cx <= dictTable.fieldCnt(); cx ++)
    {
        dictField = dictTable.fieldObject(dictTable.fieldCnt2Id(cx));

        if(! dictField.isSystem())
        {
            for(idx = 1; idx <= dictField.arraySize(); idx++)
            {
                _dataSource.object(fieldId2Ext(dictField.id(), idx)).allowEdit(_allowEdit);
            }
        }
    }
}
За это сообщение автора поблагодарили: belugin (2).
Старый 22.06.2007, 15:18   #5  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Да, гребаный метод, который не проверяет наличие dataSource.object() в трехуровневой среде. Обещали в 5.0 исправить.
Старый 22.06.2007, 15:21   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от EVGL Посмотреть сообщение
Да, гребаный метод, который не проверяет наличие dataSource.object() в трехуровневой среде. Обещали в 5.0 исправить.
Что значит не проверяет?

Я помню, столкнулся с какими-то глюками при использовании этого метода.
Переписал вот так. Ни разу пока ошибки вроде не вылетали.

X++:
static void allowEditFieldsOnFormDs_W(FormDataSource _dataSource, boolean _allowEdit)
{
    DictTable       dictTable;
    DictField       dictField;
    int             cx, idx;
    FormDataObject  dataSourceField;
    ;
    if (!_dataSource)
        throw error(@"Источник данных пустой. Обратитесь к разработчикам");

    dictTable = new DictTable(_dataSource.table());
    if (!dictTable)
        throw error(@"Таблица источника данных пустая. Обратитесь к разработчикам");

    for(cx = 1; cx <= dictTable.fieldCnt(); cx ++)
    {
        dictField = dictTable.fieldObject(dictTable.fieldCnt2Id(cx));
        if (!dictField)
            throw error(@"Критическая ошибка. Обратитесь к разработчикам");

        if(!dictField.isSystem())
        {
            for(idx = 1; idx <= dictField.arraySize(); idx++)
            {
                dataSourceField = _dataSource.object(fieldId2Ext(dictField.id(), idx));
                if (!dataSourceField)
                    throw error(@"Критическая ошибка при установке доступа на редактирование поля. Обратитесь к разработчикам");
                dataSourceField.allowEdit(_allowEdit);
            }
        }
    }
}
Старый 22.06.2007, 15:40   #7  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
2 kashperuk Меня всегда интересовал вопрс для чего в тексте ставят @

X++:
throw error(@"Критическая ошибка при установке доступа на редактирование поля. Обратитесь к разработчикам");
Старый 22.06.2007, 15:43   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Вот здесь все популярно описано.

Кстати второй раз за день ссылки эту привожу.
Рекламу делаю Максиму

Единственное, что стоит добавить, и именно по этой причине оно используется в моем коде, - BestPractice Check игнорирует RawStrings
За это сообщение автора поблагодарили: Мариночка (1), konopello (1).
Старый 22.06.2007, 16:33   #9  
Breeze is offline
Breeze
Участник
 
19 / 10 (1) +
Регистрация: 01.06.2007
Адрес: Омск
Сенкс всем, но... Ведь датасорсы не зря закрыты для редактирования) В свойстве datasource в гриде и группе по прежнему стоят указанные источники. Если я меняю значение только чекбокса и закрываю форму, то происходит вызов validateWrite для источников, а мне это совсем не надо( Как поступить?
__________________
Step by step...
Старый 22.06.2007, 16:44   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
в validateWrite пишем returns true;
в write() комментим super();
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptapedia: Filter-by-Grid Blog bot DAX Blogs 2 30.05.2012 13:39
Проверка значения CheckBox объявленного на форме в Grid mallard DAX: Программирование 3 03.05.2007 16:49
Dynamics AX: DAX 4.0 Filter by Grid [Update] Blog bot DAX Blogs 0 27.04.2007 17:10
Advanced programming: Grid data and view manipulations batiskaf_new DAX: Программирование 15 21.06.2006 11:44
View + Grid + CheckBox Yprit DAX: Программирование 4 22.02.2005 10:54
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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