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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.03.2010, 00:02   #1  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
С порталом в 2009-й пока не работал, но теоретически если есть возможность вклиниться в события страницы, подобные событиям ASP.Net, то можно решить проблему и с помощью viewstate. Единственное, что состояния нужно будет сериализировать.
Старый 31.03.2010, 17:40   #2  
LEXAR is offline
LEXAR
Участник
 
27 / 17 (1) ++
Регистрация: 11.09.2009
В блоге The Microsoft Dynamics AX Enterprise Portal Blog предлагается перекрыть методы Pack() и Init() для используемого DataSet'а. Тогда при переходе между страницами и возврате на страницу с данным AxGridView, значение фильтра сохраняется и нет необходимости настраивать фильтр заново.
X++:
public container pack()
{
     container ret;
     SysLastValue sysLastValue;
     formdatasource filterDataSource;
     ;

    filterDataSource = SalesTable_ds; // Put your datasource name

    ttsbegin;
       // Delete last saved query for the current dataset
    delete_from sysLastValue
        where sysLastValue.Company      == curext()
           && sysLastValue.UserId       == curuserid()
           && sysLastValue.RecordType   == UtilElementType::DataSet
           && sysLastValue.ElementName  == filterDataSource.name()
           && sysLastValue.DesignName   == filterDataSource.name();

    // If there is a new queryRun() object then serialize and save it
    // in the sys last value table
    // Put your datasource name
    
    if (filterDataSource.queryRun())
   {
    
        sysLastValue.RecId = 0;
        sysLastValue.Company      = curext();
        sysLastValue.UserId       = curuserid();
        sysLastValue.RecordType   = UtilElementType::DataSet;
        sysLastValue.ElementName  = filterDataSource.name();
        sysLastValue.DesignName   = filterDataSource.name();
        sysLastValue.value = SysQuery::packRangeAndSortorder(filterDataSource.queryRun().query());    
        sysLastValue.insert();
    }
    ttscommit;

    ret = super();
    return ret;
}
X++:
public void init()
{
SysLastValue    sysLastValue;
    Query savedQuery;
    ;
    super();
// get the last value from the  sys last value table
    select firstonly sysLastValue
        where sysLastValue.Company      == curext()
           && sysLastValue.UserId       == curuserid()
           && sysLastValue.RecordType   == UtilElementType::DataSet
           && sysLastValue.ElementName  == this.name()
           && sysLastValue.DesignName   == this.name();
    if (sysLastValue && sysLastValue.Value)
    {
              // If there is an unpack error delete the saved query
       if (!SysQuery::unpackRangeAndSortorder(this.query(), sysLastValue.value))
        {
            ttsbegin;
            delete_from sysLastValue
                where sysLastValue.Company      == curext()
                   && sysLastValue.UserId       == curuserid()
                   && sysLastValue.RecordType   == UtilElementType::DataSet
                   && sysLastValue.ElementName  == this.name()
                   && sysLastValue.DesignName   == this.name();
            ttscommit;
        }
    }
}
Старый 31.03.2010, 19:47   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от LEXAR Посмотреть сообщение
X++:
public container pack()
{
     container ret;
     SysLastValue sysLastValue;
...
    delete_from sysLastValue
        where sysLastValue.Company      == curext()
           && sysLastValue.UserId       == curuserid()
           && sysLastValue.RecordType   == UtilElementType::DataSet
           && sysLastValue.ElementName  == filterDataSource.name()
           && sysLastValue.DesignName   == filterDataSource.name();
...
Вот при всем уважении... не могу не встрять. Извините.

Лучше не хардкодить, а использовать нормальный класс и нормальные штатные методы:
ClassFactory.lastValueDelete
ClassFactory.lastValueGet
ClassFactory.lastValuePut

и уж чего не стоит делать, так это обнулять recid, лучше пользоваться методом clear().

X++:
public container pack()
{
     container ret;
     formdatasource filterDataSource;
     ;

    filterDataSource = SalesTable_ds; // Put your datasource name

    ttsbegin;
       // Delete last saved query for the current dataset
    classFactory.lastValueDelete(curext(),
                                 curuserid(),
                                 UtilElementType::DataSet,
                                 filterDataSource.name()
                                 filterDataSource.name());

    // If there is a new queryRun() object then serialize and save it
    // in the sys last value table
    // Put your datasource name
    
    if (filterDataSource.queryRun())
   {
        classFactory.lastValuePut(SysQuery::packRangeAndSortorder(filterDataSource.queryRun().query(),
                                  curext(),
                                  curuserid(),
                                  UtilElementType::DataSet,
                                  filterDataSource.name(),filterDataSource.name());
    }
    ttscommit;

    ret = super();
    return ret;
}
__________________
полезное на axForum, github, vk, coub.
Старый 31.03.2010, 20:59   #4  
LEXAR is offline
LEXAR
Участник
 
27 / 17 (1) ++
Регистрация: 11.09.2009
Я сам в коде не разбирался, случайно наткнулся на ответ в блоге, написал сюда. А код этот писали индусы
Теги
ax2009, axgridview, enterprise portal, ep, грид

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX2009 расширеный фильтр Wamr DAX: Программирование 11 18.12.2010 17:27
Отладка кода C# при разработке под EP AX2009 player DAX: Программирование 4 24.09.2008 19:38
EP фильтр в Web форме zelibobis DAX: Программирование 2 10.01.2008 16:59
при построении перекрёстных ссылок выдаётся сообщение об ошибках mmmax DAX: Программирование 10 21.01.2005 12:42
Позиционирование курсора на строке грида JohNick DAX: Программирование 2 14.04.2004 12:28
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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