我正在使用XML类型DataSource中的数据构建TreeGrid,就像在SmartClient展示中一样。
我使用的是Windows XP和SmartGWT 3.0版,GWT SDK 2.4.0(使用Eclipse IDE)。
然而,问题是当我尝试展开空文件夹时,树自行关闭/重置并重置所有选择(因为我正在使用一个复选框树选择类型),我也得到了这个错误(警告):
[ERROR] [testtree] - 15:19:26.637:XRP0:WARN:ResultTree:isc_ResultTree_0 (created by: isc_TreeGrid_0):Adding node to tree with id property set to:1. A node with this ID is already present in this Tree - that node will be replaced. Note that this warning may be disabled by setting the reportCollisions attribute to false.
这实际上非常相似(http://forums.smartclient.com/showthread.php?t=20167),但他没有解释解决方案。 :(
这是我用于XML数据源的测试值:
...
<record>
<id>1</id>
<parentId>0</parentId>
<name>test1</name>
</record>
<record>
<id>2</id>
<parentId>1</parentId>
<name>test41</name>
</record>
<record>
<id>3</id>
<parentId>2</parentId>
<name>test2</name>
</record>
<record>
<id>4</id>
<parentId>3</parentId>
<name>test212</name>
</record>
这是问题的截图; (抱歉没有足够的代表不能发布图片) 之前我点击了展开按钮:link (imgur image) 并且,之后:link
根据上图,如果我尝试展开'test212'
或'test2'
,则会出现此问题。
这是我的TreeGrid属性的片段:
...
TreeGrid test = new TreeGrid();
test.setAutoFetchData(true);
test.setDataSource(SingletonDS.getInstance());
test.setSelectionAppearance(SelectionAppearance.CHECKBOX);
test.setShowPartialSelection(true);
test.setShowSelectedStyle(false);
layout.addMember(test);
这是我的单件DataSource的属性:
...
singleton.setDataFormat(DSDataFormat.XML);
singleton.setID("singletonDS");
DataSourceIntegerField idField = new DataSourceIntegerField("id", "ID");
idField.setPrimaryKey(true);
DataSourceIntegerField parentIdField = new DataSourceIntegerField("parentId", "Parent ID");
parentIdField.setForeignKey(singleton.getID()+".id");
parentId.setRootValue(0);
DataSourceTextField nameField = new DataSourceTextField("name", "Name");
singleton.setFields(idField, parentIdField, nameField);
...
注意:XML数据已正确传递到网格中。
感谢您的帮助! :)
答案 0 :(得分:1)
我想我终于找到了解决方案。这不是错误,这是我自己的笨拙错误。
在广泛调试项目之后,我注意到GET参数中有一个idParent
参数,我没有处理它。因此,servlet始终输出完整的XML数据,从而产生此错误。