跳转到内容

Detail 页面下的 Table 容器获取数据

如下图所示:一个页面存在详情和列表,两个数据容器之间需要进行关联。

image-20210106144325921

实现方式

  1. 使用[dataParams]
  2. 使用lookupFrom关联。

dataParams

主要是用在列表模型的字段包含详情模型的字段,如:每个部门人员都属于某个部门

@Data
@Model(name = "部门人员")
public class Person extends BaseModel<Long> {
@Field(name = "部门")
@LinkMeta
private Department department;
}
<Detail key="department" model="trantor_doc_Department">
<Fields>
<Field name="name" />
</Fields>
</Detail>
<!-- 通过 DataStore 获取数据-->
<Table title="部门人员" model="trantor_doc_Person" dataCondition="department.id = ?" dataParams="[#department.data.id]">
<Fields>
<Field name="name" />
<Field name="age" />
</Fields>
</Table>
<!-- 通过 LogicFunction 获取数据-->
<Table title="部门人员" model="trantor_doc_Person" dataFunction="base_xxxxx" dataParams="{departmentId: #department.data.id}">
<Fields>
<Field name="name" />
<Field name="age" />
</Fields>
</Table>

lookupFrom

主要是用在详情模型包含列表模型的字段List,如:一个部门下有很多员工

注意:

  1. lookUpFrom不支持分页。
  2. lookUpFrom 属性可以将某个表单的值用作另外一个表单的字段提交,在多个 Form 一起提交的场景非常有用。
@Data
@Model(name = "部门")
public class Department extends BaseModel<Long> {
@Field(name = "员工列表")
@LinkMeta
private List<Staff> staff;
}
<View version="2" title="lookupFrom">
<Form title="部门信息" key="department" model="trantor_doc_Department">
<Fields>
<Field name="name" />
</Fields>
</Form>
<!-- lookUpFrom 属性可以将某个表单的值用作另外一个表单的字段提交,在多个 Form 一起提交的场景非常有用。 -->
<TableForm title="部门人员" model="trantor_doc_Person" lookupFrom="department.staff">
<Fields>
<Field name="name" />
<Field name="age" />
</Fields>
</TableForm>
<!-- 也可做单纯的关联 -->
<Table title="部门人员" model="trantor_doc_Person" lookupFrom="department.staff">
<Fields>
<Field name="name" />
<Field name="age" />
</Fields>
</Table>
</View>

实现示例

lookupFrom

lookUpFrom 属性可以将某个表单的值用作另外一个表单的字段提交,在多个 Form 一起提交的场景非常有用。

注意:当前例子为0.17.x 版本