【发布时间】:2014-07-07 16:45:46
【问题描述】:
我有一个像这样的对象 A:
class A
{
String name;
List<B> bList;
}
class B
{
String name;
}
我想在 ZK Grid 中渲染它,以便 A 元素是行,B 元素是列。在我的 Composer 中,我有一个 getAList() 方法,它返回一个 A 元素列表。
到目前为止,我有这个:
<grid id="myGrid" model="@{base$composer.AList}">
<rows>
<template name="model">
<row align="center">
<cell width="196px">${each.name}</cell>
<cell>${each.bList}</cell>
</row>
</template>
</rows>
</grid>
这会在我的行的最左边一列呈现 name 元素,然后在另一列打印我的 bList ArrayList 对象的 ArrayList.toString()。
我现在想要实现的是以声明方式告诉 ZK 将 bList 中包含的每个 B 元素呈现为单个单元格。我见过this fiddle 与列表框类似,但我既没有列表框也没有 MVVM 实现。
为了清楚起见,我现在可以使用 RowRenderer 并通过 Java 代码以编程方式创建每个单元格,但我想找到一个声明式解决方案。每个单元格根据其内容具有不同的 CSS 属性和事件,因此通过 Java 代码执行此操作会产生一些我不习惯的高耦合。
那么如何嵌套两个模板来实现这个功能呢?
编辑: 这是一个描述我要实现的目标的小提琴: http://www.zkfiddle.org/sample/25qpefb/3-Grid-with-template
这个想法是 Activity 对象应该被表示为每个在同一行中的单元格。位读取
<cell>${each.activities}</cell>
应该换成我想做的事。请记住,即使在小样本数据中,您也可以简单地使用附加条目静态引用每个活动对象,它可能是可变数量的元素,而在实际数据中,它最多可达 40 个元素。
【问题讨论】:
-
您能提供一个当前代码的工作示例吗?
-
是 MVVM 还是 MVC 导致您的 zul 代码更关注 MVC 而不是 MVVM。 MVVM 中网格中的网格示例:stackoverflow.com/questions/21173839/…
-
@chillworld 是的,正如我所说的,我正在使用 MVC。网格中的网格可能会起作用,但必须有一种方法来做我想做的事情,对吧?最后,它只是一个具有可变行数和列数的常规网格
-
@bidifx 我会尝试创建一个小提琴
-
当然,但这涉及到 foreach,否则你不能向你的 zul 声明它是关于多个对象的