Menu qooxdoo虚拟树作为菜单
我有一个函数,它使用小部件创建布局。问题是其中一个小部件是虚拟树(在布局的左侧),而右侧的第二个小部件取决于左侧单击的行。虚拟树的工作原理类似于菜单,它应该将行名称的值返回到右边的小部件,并使用提供的数据在右边重新创建它。然而,目前它不是在重新创建,而是在旧的小部件上添加一个新的小部件。如何在右侧重新创建小部件而不将其添加到现有小部件(界面类似于qooxdoo demobrowser视图,带有测试)Menu qooxdoo虚拟树作为菜单,menu,tree,virtual,qooxdoo,Menu,Tree,Virtual,Qooxdoo,我有一个函数,它使用小部件创建布局。问题是其中一个小部件是虚拟树(在布局的左侧),而右侧的第二个小部件取决于左侧单击的行。虚拟树的工作原理类似于菜单,它应该将行名称的值返回到右边的小部件,并使用提供的数据在右边重新创建它。然而,目前它不是在重新创建,而是在旧的小部件上添加一个新的小部件。如何在右侧重新创建小部件而不将其添加到现有小部件(界面类似于qooxdoo demobrowser视图,带有测试) 您正在使用旧的虚拟树实现(qx.ui.treevirtual.treevirtual),我建议您
您正在使用旧的虚拟树实现(qx.ui.treevirtual.treevirtual),我建议您使用qx.ui.tree.VirtualTree实现 下一步是为您的视图使用类似于控制器的东西,它侦听选择并在选择更改时创建小部件。控制器应该知道用于添加小部件的容器 当你的左边只是一张单子的时候。您还可以使用虚拟列表(qx.ui.list.list)和一组树模型 干杯, 克里斯
_createLayout : function()
{
// Create main layout
var dockLayout = new qx.ui.layout.Dock();
var dockLayoutComposite = new qx.ui.container.Composite(dockLayout);
this.getRoot().add(dockLayoutComposite, {edge:0});
// Create header
this.__header = new bank.view.Header();
dockLayoutComposite.add(this.__header, {edge: "north"});
// Create toolbar
this.__toolBarView = new bank.view.ToolBar(this);
dockLayoutComposite.add(this.__toolBarView, {edge: "north"});
// Create the tree view, which should create dockLayout below, when user clicks with Row value
dockLayoutComposite.add(this.getTreeView(), {edge: "west"});
// This layout should be created and recreated with clicked row value
dockLayoutComposite.add(bank.InvoiceListBuilder.createList("Tree_returned_value"), {edge: "center"});
},
getTreeView : function()
{
var hBox = new qx.ui.container.Composite(new qx.ui.layout.HBox(20));
var tree = new qx.ui.treevirtual.TreeVirtual("Tree");
tree.setColumnWidth(0, 170);
tree.setAlwaysShowOpenCloseSymbol(true);
var dataModel = tree.getDataModel();
var te2 = dataModel.addBranch(null, "Folders", true);
dataModel.addBranch(te2, "Incoming", false);
dataModel.addBranch(te2, "Outgoing", false);
dataModel.addBranch(te2, "Drafts", false);
dataModel.setData();
hBox.add(tree);
var foldercontent = bank.InvoiceListBuilder.createList("incoming");
tree.addListener("changeSelection",
function(e)
{
// this function should return row value to function: bank.InvoiceListBuilder.createList("Tree_returned_value") and create/recreate dockLayout with newly created widget from bank.InvoiceListBuilder.createList function
});
return hBox;
},