0

我有一个非常简单的问题。我很惊讶,找不到答案。如何在 ZK 框架中彻底清除 ListBox (org.zkoss.zul.ListBox)?

4

4 回答 4

3

下面的代码清除列表框,但如果使用模型,可能会导致问题:

lb.getItems().clear();

下面的代码清除选择:

lb.clearSelection();

下面的代码设置一个新模型,删除旧模型和所有项目。如果模型为空,则列表框将为空

lb.setModel(model);

如果您想获得一套新的项目,最后一个应该是最好的。
如果您有他们的列表,请使用:

lb.setModel(new ListModelList<>(myList)); 
于 2013-08-27T19:20:57.983 回答
1

如果您看到API

public java.util.List<Listitem> getItems()

返回所有 Listitem 的实时列表。实时我们的意思是您可以直接使用列表界面添加或删除它们。换句话说,您可以通过直接操作返回的列表来添加或删除项目。

因此,从此列表中删除将从 ListBox 中删除。

所以最终你的路线是listbox.getItems().clear();

于 2013-08-27T19:20:25.580 回答
0

如果要清除选定的索引,请使用:clearSelection()

于 2013-08-27T19:14:37.117 回答
0
  • 即使使用setModel,页码Listbox仍然显示以前的内容页码
  • getItems.clear()也不会清除中的页码Listbox

编辑:

我确实为此找到了一个解决方案:为了确保即使是页码也与列表项一起删除,一种方法是:

// removes the data items by setting an empty model
// this has to be done before resetting the mold
myListbox.setModel(new ListModelList<String>());

// removes the page numbers by resetting the mold
myListbox.setMold("<b>default</b>");

然后当您需要填充数据时,您必须将模具设置为分页,并使用您的数据列表设置模型:

List<String> res= myListData(); //the data to be filled in the listbox
myListbox.setMold("<b>paging</b>");
myListbox.setPageSize(15);
myListbox.setActivePage(0);
myListbox.setModel(new ListModelList<String>(res));

另一种方法是控制分页控制器的可见性:

eventListbox.getPagingChild().setVisible(false);
于 2014-07-16T09:34:58.507 回答