我有一个RPC生成的具有头和主体的小部件列表。我想要垂直显示他们,只有标题显示。当用户单击一个标题时,相应的主体滑到视图中,任何其他打开的主体都会从视图中滑出。
手风琴效应可以通过StackPanel来实现。但是,我也希望能够轻松地分页和访问CellList和AsyncDataProvider提供的远程数据。它将在GWT2.5中同时提供这两者,不幸的是,GWT2.5还没有推出。
我的另一个想法是使用一个CellList,并在每个单元上使用相对定位来获得手风琴效果。逻辑非常简单,可以实现,但是从单元格列表中抓取单元格并处理其style属性似乎是一种肮脏的攻击。
有更好的方法吗?
跟进:(我不确定这是否应该是一个单独的问题。)CellList的结构如下所示:
<div __gwtcellbasedwidgetimpldispatchingfocus="true" __gwtcellbasedwidgetimpldispatchingblur="true" class="GJOQRHCBPB GJOQRHCBMK">
<div onclick="" __idx="0" class="GJOQRHCBLB" style="outline:none;" tabindex="0">
<!-- my cell html -->
</div>
<div onclick="" __idx="1" class="GJOQRHCBLB" style="outline:none;" tabindex="1"> <!-- ... -->
<div onclick="" __idx="2" class="GJOQRHCBLB" style="outline:none;" tabindex="2"> <!-- ... -->
<!-- ... -->
</div></div>设计我的单元格很容易,并且它在页面上正确地显示。然而,我对单元格的样式并不影响父div(使用__idx),而且它们仍然延伸出整个原始长度。这意味着,如果单击单元格列表“应该在”的下方,则会触发选择事件。如果我可以直接访问和样式__idx div,这是可以修复的,但我担心这是一个非常肮脏的攻击。有更好的方法吗?
发布于 2012-05-12 22:54:32
GWT2.5将添加一种在CellTable (或DataGrid)中为单个项构建几行的方法;它不会对CellList进行任何更改。此外,您仍将负责处理事件以展开/折叠行,可能是动画行,最多也不会有一个展开行是免费的。
总之,它不会为您的用例改变任何东西。
您需要在单元格的呈现/事件处理中烘焙这种展开/折叠行为。至于折叠其他行,您必须从列表级别开始处理DOM (即查找所有可折叠元素并确保它们已折叠,然后展开需要它的行)。
或者,您可以使用NoSelectionModel或SingleSelectionModel,只需将选定的/最后选定的项呈现为展开项,其他项就会折叠(如果需要,可以从SelectionHandler触发重绘)。你可能会失去动画。
https://stackoverflow.com/questions/10566942
复制相似问题