GWT不包含TreeTable,但我的项目要求包含树表。所以我使用 Tree 创建它和 FlexTable .
这里 Bean 类:Item
class Item
{
ItemType itemType; //Parent,Child Enum type
long parentId;
long amount;
String itemName;
String qty;
String rate;
//Setter / Getter Methods
}
这是自定义 TreeItem 类,它在父项和子项之间具有关系。我已经使用 TreeItemNode 创建了一行。
public class TreeItemNode extends TreeItem {
private FlexTable table; //this will use to access child
private FlexTable parentTable; //This will use to access parent of particular child.
//This constructor create parent node
public TreeItemNode(FlexTable parentTable) {
setWidget(parentTable);
this.parentTable=parentTable;
setState(true);
}
//The method used to add Child items in parent
public TreeItem addItem(Widget widget) {
this.table=(FlexTable) widget;
TreeItem ret = new TreeItem(widget);
addItem(ret);
return ret;
}
}
使用 Item List,该方法正在创建具有父子节点关系的树。
class CustomTreeTable extends Tree
{
public void createTreeTable() {
//This map store parent id and tree item object for letter fetch the parent node and add child node in it
treeItemMap = new HashMap<Long, BOQTreeItem>();
for (Item item : itemList) {
if (item.getParentItemId() == 0) {
//Create new parent node
TreeItemNode itemTreeItem = new TreeItemNode(addChildItem(item,
new FlexTable(), true),
"gwt-TreeNode");
treeItemMap.put(item.getId(), treeItem);
addItem(itemTreeItem);
} else {
//Add child node
if (treeItemMap.containsKey(item.getParentItemId())
&& treeItemMap.get(item.getParentItemId()) != null) {
FlexTable dataFlextable = treeItemMap.get(
item.getParentItemId()).getTable();
if (dataFlextable == null) {
dataFlextable = new FlexTable();
treeItemMap.get(item.getParentItemId()).setTable(
dataFlextable);
}
FlexTable treeTable = addChildItem(item, dataFlextable,
false);
treeItemMap.get(item.getParentItemId()).addItem(treeTable);
}
}
}
}
}
使用这个我的表格如下。 + 我的树节点打开/关闭如下:
ItemName qty rate amount
+ item1 11 1 11 //parent item
---------------------------
- item2 11 2 22
--------------------------------
SubItemName qty rate amount //child item
subItem1 5 2 10
subItem2 8 5 40
------------------------------------
问题是,当我想计算一个原始(子项目)中的数量*比率时,我可以使用行索引来计算,但如果我想计算所有子项目并显示在父行中。那么逻辑就变得如此复杂。所以我只想知道我实现的逻辑,例如将实例存储在 map 中并进行管理。合适吗?我正朝着正确的方向或错误的方向前进。
最佳答案
也许使用 DataGrid 小部件会更简单地实现您想要实现的目标。
查看 GWT 展示:here
在 DataGrid 上,当您单击 ShowFriends 链接时,父行下会显示子行。
希望有帮助。 :)
关于gwt - 使用 TreeItem 和 FlexTable 自定义 GWT 树表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11241550/