Javascript Primefaces SelectManyMenu with Filter:如何使用JS选择所有显示的项目
我有SelectManyMenu(primeFaces 6.1)和“全选”和“全选”按钮,它们选择/取消选择选择选择列表中的所有项目。我用过滤器修改了SelectManyMenu,但我的“全选”按钮仍然依赖java方法进行选择,这意味着未过滤的的所有项目(完整)选择列表显示为选中,即使用户在单击“全选”之前过滤了选择列表。Javascript Primefaces SelectManyMenu with Filter:如何使用JS选择所有显示的项目,javascript,ajax,primefaces,Javascript,Ajax,Primefaces,我有SelectManyMenu(primeFaces 6.1)和“全选”和“全选”按钮,它们选择/取消选择选择选择列表中的所有项目。我用过滤器修改了SelectManyMenu,但我的“全选”按钮仍然依赖java方法进行选择,这意味着未过滤的的所有项目(完整)选择列表显示为选中,即使用户在单击“全选”之前过滤了选择列表。是否有方法选择客户端SelectMany菜单中显示的所有项目(已过滤或未过滤)? 我试图创建一个“选择筛选列表上的所有项目”按钮,该按钮是有条件呈现的(如果用户在筛选框中键入)
是否有方法选择客户端SelectMany菜单中显示的所有项目(已过滤或未过滤)? 我试图创建一个“选择筛选列表上的所有项目”按钮,该按钮是有条件呈现的(如果用户在筛选框中键入),但我找不到任何可以用于创建基于筛选的操作的事件 xhtml文件: MySelectionList对象:
public void selectAll()
{
selectionListString=new ArrayList();
对于(MySelectItem selectItem:selectionList)
{
selectionListString.add(selectItem.getValue());
}
}
公共资源(全部)
{
this.selectionListString=newArrayList();
}
有人知道怎么做吗
注意:我使用PrimeFaces 6.1,您可以向SelectManyMenu小部件添加javascript方法,只选择可见项:
PrimeFaces.widget.SelectManyMenu.prototype.selectVisible = function() {
for(var i = 0; i < this.items.length; i++) {
var item = this.items.eq(i);
if(item.is(':visible')) {
this.selectItem(item);
} else {
this.unselectItem(item);
}
}
};
PrimeFaces.widget.SelectManyMenu.prototype.selectVisible=function(){
对于(var i=0;i
然后,只需在按钮上触发一个PF('yourSelectManyMenuWidgetVar')。selectVisible()
代码是从中借用和修改的。确保在脚本之后加载上述修改
还要确保向primefaces团队提出一个功能请求,在最好的情况下,通过拉式请求丰富功能。回答得好。。。实际上,所有这些都是html、javascript(在jquery的帮助下)和PrimeFaces的开源。。。所有这些都只是网络开发,真的…;-)
/**
*
* @return
*/
public BirdSelectionList getSelectionList()
{
return selectionList;
}
/**
*
* @param selectionList
*/
public void setSelectionList(MySelectionList selectionList)
{
this.selectionList = selectionList;
}
public void selectAll()
{
selectionListString = new ArrayList<>();
for (MySelectItem selectItem : selectionList)
{
selectionListString.add(selectItem.getValue());
}
}
public void deselectAll()
{
this.selectionListString = new ArrayList<>();
}
PrimeFaces.widget.SelectManyMenu.prototype.selectVisible = function() {
for(var i = 0; i < this.items.length; i++) {
var item = this.items.eq(i);
if(item.is(':visible')) {
this.selectItem(item);
} else {
this.unselectItem(item);
}
}
};