我在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));
}
答案 0 :(得分:1)
您之前提出的问题的答案也适用于此:
Adding view/temporary table records to Form Grid
您必须使用多个数据源(使用同一个表)。请记住更改网格的datasource
属性以匹配正确的属性。我的猜测是他们目前都引用相同的数据源。
答案 1 :(得分:0)
您可以查询表格,并将其作为“子”实体吗?
但是,我不知道为什么你不能在相同的表单数据源中引用两次相同的表。确保正确定义表之间的链接,并且不会混淆用于它们的数据源名称。
答案 2 :(得分:0)
实际上,您需要使用FormDataSource对象上的id()方法在网格对象上设置数据源,而不仅仅是完整对象。
更改自:
formBuildGridControl.dataSource(formBuildDatasource);
为:
formBuildGridControl.dataSource(formBuildDatasource.id());