更改查阅列的宽度

时间:2015-12-23 10:55:22

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

我已经创建了一个包含两列的查找,第一列包含整数,但是第二行的表现很好,但第二列的名称很长,这就是出现问题的地方。用户应该水平滚动以检查整个字符串,即使在这种情况下,列的宽度也不足以显示整个数据。

我发现了这个:

Adjusting column width on form control lookup

但我不明白究竟要添加的位置和内容。

我不确定但是我可能必须在参数部分添加这个查找用于指向SSRS报告的菜单项的事实。

更新1:

我使用了一个名为this:

的查找表单
Args args;
FormRun formRun;
;

args = new Args();

args.name(formstr(LookupOMOperatingUnit));
args.caller(_control);
formRun = classfactory.formRunClass(args);
formRun.init();
_control.performFormLookup(formRun);

并在此表单的init方法中添加:

public void init()
{
    super();
    element.selectMode(OMOperatingUnit_OMOperatingUnitNumber);
}

意味着我真正需要的领域。

enter image description here

我不确定我是否完全了解这种机制,但似乎它知道如何将这个确切的字段从它真正开始的地方返回到DialogField。

为了使其看起来像查找,我将Design的样式保持为自动,但将 WindowType 更改为弹出 HideToolBar 框架边框

2 个答案:

答案 0 :(得分:4)

可能最好的路径是进行自定义查找并更改关键字段的扩展数据类型以反映这一点。通过这种方式,变化反映在所有地方。请参阅表单FiscalCalendarYearLookup和EDT FiscalYearName作为示例。

如果您只需要更改一个地方,则轻松选项是覆盖调用表单上的performFormLookup。您还应该覆盖长字段的扩展数据类型的DisplayLength属性。

public void performFormLookup(FormRun _form, FormStringControl _formControl)
{
    FormGridControl grid = _form.control(_form.controlId('grid'));
    grid.autoSizeColumns(false);
    super(_form,_formControl);
}

除非您有表格,否则这对您没有帮助,但在此报告方案中可能并非如此。

从AX 2009开始,内核默认根据实际记录内容自动更新控件大小。这是一个令人沮丧的原因,因为当没有记录并且这些尺寸被保存时尺寸很小!此外,在某些情况下,自动更新的性能最初也很糟糕。作为事后的想法,提供了网格控件autoSizeColumns方法,但遗憾的是它从未作为属性公开。

答案 1 :(得分:0)

您可以扩展sysTableLookup类,并覆盖buildFromGridDesign方法以设置网格控件的宽度。

protected void buildFormGridDesign(FormBuildGridControl _formBuildGridControl)
{
    if (gridWidth > 0)
    {
        _formBuildGridControl.allowEdit(true);
        _formBuildGridControl.showRowLabels(false);
        _formBuildGridControl.widthMode(2);
        _formBuildGridControl.width(gridWidth);
    }
    else
    {
        super(_formBuildGridControl);
    }

}