【问题标题】:Change width of a lookup column更改查阅列的宽度
【发布时间】:2020-06-15 09:19:00
【问题描述】:

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

我找到了这个:

Adjusting column width on form control lookup

但我不明白要添加的确切位置和内容。

我不确定,但也许我必须在参数部分中添加一个事实,即此查找用于指向 SSRS 报告的菜单项。

更新 1:

我得到了一个这样的查询表单:

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);
}

表示我真正需要的领域。

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

为了让它看起来像一个查找,我将设计的风格保持为自动,但将 WindowType 更改为 PopupHideToolBarYesFrameBorder

【问题讨论】:

  • 只需将Style 属性更改为Lookup
  • 查看表单 FiscalCalendarYearLookup initrun 方法以添加正确的行为。
  • 你可以为你的目标字段创建一个替代的扩展数据类型,然后你就不需要任何调用代码了。
  • @JanB.Kjeldsen 如果我将样式更改为查找,它将像以前一样,当我无法看到整个字符串或调整它的大小时......我会看看 FiscalCalendar。 ...

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


【解决方案1】:

最好的方法可能是进行自定义查找并更改关键字段的扩展数据类型以反映这一点。通过这种方式,变化体现在所有地方。请参阅表单 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 方法,但遗憾的是它从未作为属性公开。

【讨论】:

  • 感谢您的回复.. 有没有机会我可以创建一个表单,从查找方法打开它,选择一行然后返回所需的字段?也许是这样的:ax4dev.wordpress.com/tag/performformlookup
  • 你为什么要那样做?如果可能,坚持标准的做事方式。
【解决方案2】:

您可以扩展 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);
    }

}

【讨论】:

    猜你喜欢
    • 2017-01-03
    • 1970-01-01
    • 2012-08-23
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多