我想使用SmartGWT的TreeGrid对象来显示分层数据。数据是异构的,并非所有元素都具有相同的类型且具有相同的字段。例如,我有以下数据:
Home
|-Room 1
|-Room 2
|-Table
|-Chair
所有对象都有唯一的ID。家里没有田地。客房只有一个名字。表有一个名称和一个int字段“seatNumberOfPeople”,主席没有。主席有一个字段“颜色”取自表中没有的可能值列表。
当选择TreeGrid中的对象时,我想显示一个DetailViewer,它允许用户编辑该对象的字段。显然,DetailViewer将为每种类型的节点提供不同的字段和验证。
如何设计DataSource以满足这些要求? 从异构数据创建这样的动态DetailViewer的最佳实践是什么?
不幸的是,网上的所有示例都显示了同质的数据(树中所有对象的相同字段)。
答案 0 :(得分:0)
在这种情况下,我将创建一个具有两个附加字段的数据源,外部ID和外部类型。我们假设你使用主键作为外部ID,数据源名称作为类型。
选择树节点后,您可以将ID和类型传递给详细信息查看器。它调用getDataSource(type)和fetch({criteria id = ID})然后呈现你的细节。 (当然那是假的代码)