|
![]() |
#1 |
Участник
|
С порталом в 2009-й пока не работал, но теоретически если есть возможность вклиниться в события страницы, подобные событиям ASP.Net, то можно решить проблему и с помощью viewstate. Единственное, что состояния нужно будет сериализировать.
|
|
![]() |
#2 |
Участник
|
В блоге 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; } } } |
|
![]() |
#3 |
Участник
|
Цитата:
Сообщение от 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; } |
|
![]() |
#4 |
Участник
|
Я сам в коде не разбирался, случайно наткнулся на ответ в блоге, написал сюда. А код этот писали индусы
|
|
Теги |
ax2009, axgridview, enterprise portal, ep, грид |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|