【问题标题】:How to get the form object in a ListPageInteraction class?如何在 ListPageInteraction 类中获取表单对象?
【发布时间】:2014-04-15 18:59:52
【问题描述】:

使用 Microsoft Dynamics AX 2012。

我有一个listpage form,它有一个引用的ListPageInteraction 类,只是想更改一些控件的标签/标题。为此,我需要执行以下操作:

element.form().design().control('<YourControlName>');

但我无法在 ListPageInteraction 类上使用此方法。我决定研究类的初始化方法。但是没有办法从那里到达表单,我怎样才能到达控件并设置标签?

【问题讨论】:

  • 我无法创建新标签 (dynamics-ax-2012),所以我只是评论一下这个问题是关于 AX2012

标签: axapta microsoft-dynamics x++ ax dynamics-ax-2012


【解决方案1】:

common = this.listPage().activeRecord('Table');
if(common.isFormDataSource())
{
    fds = common.dataSource();
    fds.formRun().control(fds.formRun().controlId('ControlOfScreen')).
       userPromptText('New Description');
}

另一个从 projProjectTransListPageInteraction.initializeQuery() 角度改变表格 projProjectTransactionsListPage 网格中 TransDate 字段标签的示例

public void initializeQuery(Query _query)
{
    QueryBuildRange     transDateRange;
    // ListPageLabelChange =>
    Common              externalRecord;
    FormDataSource      frmDs;
    FormRun             formRun;
    FormControl         frmCtrl;
    // ListPageLabelChange <=
    ;

    queryBuildDataSource = _query.dataSourceTable(tableNum(ProjPostTransView));
    transDateRange = SysQuery::findOrCreateRange(queryBuildDataSource, fieldNum(ProjPostTransView, TransDate));

    // Date range is [(today's date - 30)..today's date] if not showing transactions for a particular project.
    // Date range is [(dateNull())..today's date] if showing transactions for a particular project so that all transactions are visible.
    transDateRange.value(SysQuery::range(transStartDate, systemDateGet()));

    this.linkActive(_query);

    // ListPageLabelChange =>
    externalRecord = this.listPage().activeRecord(_query.dataSourceTable(tableNum(ProjPostTransView)).name());//No intrisic function for form DS?
    if(externalRecord.isFormDataSource())
    {
        frmDs   = externalRecord.dataSource();
        formRun = frmDs.formRun();
        if(formRun)
        {
            frmCtrl = formRun.design().controlName(formControlStr(projProjectTransactionsListPage,TransDate));
            if(frmCtrl)
            {
                frmCtrl.userPromptText("newName");
            }
        }
    }
    // ListPageLabelChange <=
}

【讨论】:

    【解决方案2】:

    我认为不可能从 ListPageInteraction 中获取 FormRun 对象。 如果你能做到,剩下的就很容易了:

    FormControl fc = formRun.design().controlName(formcontrolstr(formName, controlName));
    // etc.
    

    【讨论】:

    • 如果您尝试从表单数据源上的方法访问按钮,这也是一个实时保护程序!
    猜你喜欢
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 2011-09-01
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多