Web applications SmartGWT树状体选择

Web applications SmartGWT树状体选择,web-applications,smartgwt,Web Applications,Smartgwt,我有一个SmartGWT webapp,它使用带有数据源的TreeGrid。我希望此treeGrid预先选择保存在cookie中的值。我已经获得了要正确保存在cookie中的值,但是我尝试了几种不同的方法让treeGrid选择这些值,但我无法让它工作。我正试图在我的入口点的onmoduleLoad方法中实现这一点 我试过: Cookies.setCookie( "selectedUnit", TreeGrid.getSelectedPaths() ) 要设置cookie,然后在重新加载页面时:

我有一个SmartGWT webapp,它使用带有数据源的TreeGrid。我希望此treeGrid预先选择保存在cookie中的值。我已经获得了要正确保存在cookie中的值,但是我尝试了几种不同的方法让treeGrid选择这些值,但我无法让它工作。我正试图在我的入口点的onmoduleLoad方法中实现这一点

我试过:

Cookies.setCookie( "selectedUnit", TreeGrid.getSelectedPaths() )
要设置cookie,然后在重新加载页面时:
TreeGrid.setSelectedPaths( Cookies.getCookie("selectedUnit" )
当我无法使其工作时,我尝试仅存储所选项目的id:

Cookies.setCookies( "selectedUnit", TreeGrid.getSelected().getAttribute("id") )
然后onLoad尝试查找该记录并选择它:

TreeGrid.selectRecord( TreeGrid.getTree().find("id", Cookies.getCookie("selectedUnit") ) )
这也不起作用,所以最后我尝试存储TreeGrid.getSelectedState(),并在从cookie onLoad中检索该值时,将其传递给TreeGrid.setSelectedState(),与我的第一次尝试类似,但传递的是状态而不是路径

这些东西我都没法用。我不能告诉TreeGrid在“OnmoduleLoad”方法中选择一个项吗?此操作是否仅在绘制TreeGrid后有效?如果是这种情况,我在哪里以及如何才能做到这一点

提前感谢您提供的任何帮助

我想出来了:


我最终使用set(/get)SelectedState。我遇到的问题是在构造函数中调用setSelectedState,它试图在数据实际存在之前设置所选状态。我通过为树设置onDataArrived处理程序,然后展开树(以获取所有数据),然后设置所选状态来修复此问题。

谢谢您的回答。我将在我的情况下尝试它,希望能够完成这项工作。“MUP7:WARN:TreeGrid:isc\U TreeGrid\U 0:如果没有主键字段集的数据源,则无法获取SelectedState”“MUP7:WARN:TreeGrid:isc\U TreeGrid\U 0:如果没有主键字段集的数据源,则无法获取SelectedState”--调用getSelectedState()时出现此错误。我想我需要设置主键。您在数据源上也设置了primaryKey吗?然后我尝试将一个字段设置为primaryKey,但结果导致某种堆栈溢出!错误消息是“(RangeError):超出了最大调用堆栈大小类型:stack_overflow arguments:uuuu gwt_ObjectId:1811”您是否可以发布您的源(包括用于创建TreeGrid的源和数据源的源)。这将帮助我理解为什么我的代码不起作用。非常感谢。