Инструменты пользователя

Инструменты сайта


axapta:treeview

 *Tree_Lookup

Стандартный Класс/FormTreeDatasource не поддерживает фильтрованные источники данных. Если вы хотите из использовать, измените функцию subTreeQueryRun в классе ~FormTreeDataSource. Вызовите метод mergeRanges, чтобы соединить фильтры в один объект query:

QueryRun subTreeQueryRun(AnyType _ParentValue)
{
    Query query = new Query();
    QueryBuildDataSource queryBuildDataSource = query.addDataSource(formDataSource.table());
    QueryBuildRange criteriaParentId = queryBuildDataSource.addRange(parentId);
    ;
    queryBuildDataSource.addSortField(txt);

   
    //это добавленный код
    SysQuery::mergeRanges(query,formDataSource.query());

    if (_ParentValue)
        criteriaParentId.value(_ParentValue);
    else
        criteriaParentId.value(strFmt('"%1"',queryValue(_ParentValue)));

    return new QueryRun(query);
}

Для того, чтобы фильтровать источник данных CustTable, надо поправить метод init в tutorial_Form_Treedatasource:

void init()
{
    super();
 
    SysQuery::findOrCreateRange(CustTable_q.dataSourceNo(1), fieldNum(CustTable,CustGroup)).value(queryValue('20'));
 
    treeDatasource = new FormTreeDatasource(this,element.control(control::Tree), 
                                                   fieldnum(CustTable,accountNum),
                                                   fieldnum(CustTable,invoiceAccount),
                                                   fieldnum(CustTable,name)
     );   
     treeDatasource.initRoot(CompanyInfo::find().name,'');
}
axapta/treeview.txt · Последнее изменение: 2018/04/13 22:43 (внешнее изменение)