0

我正在使用来自 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>

这是问题的截图;(抱歉没有足够的代表无法发布图片) 我点击展开按钮之前: 链接(imgur 图片)之后链接

根据上图,如果我尝试展开,就会出现这个问题'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);

这是我的单例数据源的属性:

...    
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 数据已正确传递到网格中。

谢谢你的帮助!:)

4

1 回答 1

1

我想我终于找到了解决方案。这不是错误,这是我自己的笨拙错误。

广泛调试项目后发现idParentGET参数中有一个参数,我没有处理。结果,servlet 总是输出完整的 XML 数据,从而产生这个错误。

于 2014-06-19T06:33:53.273 回答