多个选项卡式网格,但记录信息仅引用第一个选项卡中的网格

时间:2013-12-24 09:14:10

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

我在x ++(formBuild)中完成了一个表单,并设法在不同的选项卡中显示不同的网格。但是,当我在除第一个网格之外的任何网格上执行右键单击记录信息时,详细信息将是第一个网格的详细信息。例如。当我执行记录信息时,第二行网格2实际上是网格1的第二行。

有一件事是所有网格实际上都在使用同一个表,每个网格只有不同的查询范围。

有什么方法可以解决这个问题吗?

添加了代码段

制作网格:

for (counter = 0; counter < locations.lastIndex(); counter++)
{
    formBuildDatasource = form.addDataSource(tableStr(SomeTable));
    formBuildTabPageControl = formBuildTabControl.addControl(FormControlType::TabPage, locations.value(counter+1));
    formBuildTabPageControl.caption(locations.value(counter+1));
    formBuildGridControl = formBuildTabPageControl.addControl(FormControlType::Grid, locations.value(counter+1));
    formBuildGridControl.allowEdit(0);
    formBuildGridControl.dataSource(formBuildDatasource);
    formBuildGridControl.height(500,-1);
    formBuildGridControl.width(550,-1);
    formBuildGridControl.addDataField(formBuildDatasource.id(), fieldNum(SomeTable, MachineId));
    formBuildGridControl.addDataField(formBuildDatasource.id(), fieldNum(SomeTable, MachineStatus));

}

添加查询:

for (counter = 0; counter < locations.lastIndex(); counter++)
{
    fds = formRun.dataSource(counter+1);
    qbds = fds.query().dataSourceNo(1);
    qbr = Qbds.addRange(fieldnum(SomeTable, MachineLocation));
    qbr.value(locations.value(counter+1));
}

3 个答案:

答案 0 :(得分:1)

您之前提出的问题的答案也适用于此:

Adding view/temporary table records to Form Grid

您必须使用多个数据源(使用同一个表)。请记住更改网格的datasource属性以匹配正确的属性。我的猜测是他们目前都引用相同的数据源。

答案 1 :(得分:0)

您可以查询表格,并将其作为“子”实体吗?

但是,我不知道为什么你不能在相同的表单数据源中引用两次相同的表。确保正确定义表之间的链接,并且不会混淆用于它们的数据源名称。

答案 2 :(得分:0)

实际上,您需要使用FormDataSource对象上的id()方法在网格对象上设置数据源,而不仅仅是完整对象。

更改自:

formBuildGridControl.dataSource(formBuildDatasource);

为:

formBuildGridControl.dataSource(formBuildDatasource.id());