首页 文章

添加表单过滤器

提问于
浏览
0

我目前正在使用Microsoft Dynamics AX中的表单 . 表单由一个网格组成,该网格包含来自4个不同表格的大约10个字段由于表单现在它返回太多的值,所以我需要包含某种过滤器,它不需要是动态的,只是一个静态过滤器,只表示在Y列中显示值为X的行 .

这里有没有人有这方面的经验?我从哪里开始?

我必须说我根本没有使用过Microsof AX,我已经和它一起工作了大约一个月了 .

我试着按照这个指南:How to: Add Filter Controls to a Simple List Form [AX 2012]但是我被困在第二部分(将控件添加到自定义过滤器组)第2步:我不知道选择哪种控件,我选择让我们说一个ComboBox我不能让第3步工作,因为我没有看到他们提到的'Override Methods' .

1 回答

  • 1

    好吧,我通常这样做:

    • 在ClassDeclaration中,创建尽可能多的QueryBuildRanges变量作为要过滤的字段 . 我们将它们命名为Criteria1,Criteria2等(请将它们正确命名,请在此处注明)
    QueryBuildRange criteria1, criteria2;
    
    • 在每个数据源中,您需要过滤,覆盖方法Init,添加类似于此的代码:
    super();
    criteria1 = this.query().datasource(tablenum(tableofdatasource)).addQueryRange(fieldNum(fieldtofilter))
    //criteria1.status(RangeStatus::locked); //optional - this way you can hide filter field to user, have it readonly for users, etc
    
    • 在表单中创建StringEdit或ListBox类型的控件以用作过滤器 . 将其AutoDeclaration属性更改为是 . 覆盖modified()方法 . 在其中,我用来做类似的东西:
    super();
    element.changeFilters();
    
    • 在表单中,添加方法changeFilters();
    range rangeFromStringControl = StringEditControlName.text(); //Put in rangeFromStringControl the string to be used as filter, as a user would write it
    range rangeFromListBoxControl;
    criteria1.value(rangeFromStringControl);
    
    switch (listBoxControl.Selection())
    {
        case NoYesAll::All:
            rangeFromListBoxControl = ''; //Empty filter string - No filter at all
            break;
        case NoYesAll::No:
            rangeFromListBoxControl = QueryValue(NoYes::No); //Or whatever string filter value you want
            break;
        //Etc
    }
    
    //We have all filter strs done; let's filter for each main DataSource required with new filters
    DataSource1.executeQuery(); 
    //If there is other datasources joined to this one, it's usually no necessary to call their executeQuery;
    //If there are others with filters and not joined to it, call their executeQuery()
    
    • 如果在窗体打开时需要应用此过滤器,请将适当的初始值设置为控件,然后在窗体的run()方法中设置:
    run();
    element.changeFilters();
    

相关问题