根据<p:columnToggler>
中的列选择显示数据表中的列。
在该列选择中,当我单独选中所有复选框时,应选中AllAll。
当用户单独选择数据表所有复选框列切换器时,如何检查SelectAll?
数据表中的Toggler代码:
<f:facet name="header">
<h:panelGroup layout="block" styleClass="columnSty vetselectStyle">
<p:commandButton id="toggler" value="" global="false" onclick="addSelectAll();" type="button" title="Column Selection"/>
<p:columnToggler datasource="vetDataTable" id="colTogglerVetDataTable" trigger="toggler">
</p:columnToggler>
</h:panelGroup>
</f:facet>
要添加的代码在列选择中选择所有复选框:
function addSelectAll(){
$("#li_togglerSelectAll")&&
$("#li_togglerSelectAll").remove(),
$(".ui-columntoggler-items").prepend('<li id="li_togglerSelectAll" class="selectAllSty"> <input type="checkbox" id="togglerSelect" onclick="selectAllInToggler(document.getElementById(\'togglerSelect\').checked);"/><label for="togglerSelect">SelectAll</label></li>')
}
function selectAllInToggler(a){
$(".ui-columntoggler-items").find("li").find("> .ui-chkbox > .ui-chkbox-box >.ui-chkbox-icon").each(function(b){a?$(this).hasClass("ui-icon-blank") && $(this).click():$(this).hasClass("ui-icon-check") && $(this).click()
})
}
答案 0 :(得分:0)
将一个函数绑定到切换器的click事件,检查是否所有项都被选中。
这样的事情:
function addSelectAll(){
$("#li_togglerSelectAll")&&
$("#li_togglerSelectAll").remove(),
$(".ui-columntoggler-items").prepend('<li id="li_togglerSelectAll" class="selectAllSty"> <input type="checkbox" id="togglerSelect" onclick="selectAllInToggler(document.getElementById(\'togglerSelect\').checked);"/><label for="togglerSelect">SelectAll</label></li>')
##Add this
$('.ui-columntoggler-items').bind("click", function() {
if ($($(this)[0]).find('.ui-chkbox-icon.ui-icon.ui-icon-blank').length === 0) { $('#togglerSelect').prop('checked', true); } else { $('#togglerSelect').prop('checked', false); }
})
}
答案 1 :(得分:0)
以下是解决方案:
当用户选择数据表所有单独的复选框列切换器
时,选择全部<h:panelGroup>
<p:commandButton id="toggler" value="" global="false" onclick="addSaveButton();selectAll();" type="button" title="Column Selection" />
<p:columnToggler datasource="vetDataTable" id="colTogglerVetDataTable" trigger="toggler">
<p:ajax event="toggle" oncomplete="selectAll();" />
</p:columnToggler>
</h:panelGroup>
function selectAll() {
var a=[],b=[];
$(".ui-columntoggler-items").find("li").find("> .ui-chkbox > .ui-chkbox-box >.ui-chkbox-icon").each(function()
{
var d="";
$(this).hasClass("ui-icon-blank")?(
d=$(this).parent().parent().parent().find("label").text(),
a.push(d.trim())):$(this).hasClass("ui-icon-check")&&
( d=$(this).parent().parent().parent().find("label").text(),
b.push(d.trim()))
});
//alert(a.length);
//alert(b.length);
if(a.length == '0')
$('#togglerSelect').prop('checked', true);
else
$('#togglerSelect').prop('checked', false);
}
答案 2 :(得分:0)
我以类似的方式实现了
function selectAllBtn() {
if( $(".ui-columntoggler-items").find("li")[0].id != "li_togglerSelectAll"){ //only once
$(".ui-columntoggler-items").prepend('<li id="li_togglerSelectAll" > <input type="checkbox" id="togglerSelect" class="margemDir" onclick="selectAllInToggler(document.getElementById(\'togglerSelect\').checked);"/><label for="togglerSelect">Sellect all</label></li>')
}
}
function selectAllInToggler() {
$(".ui-columntoggler-items").find("li").each(function() {
if($('#togglerSelect').prop('checked')){
if( $(this).find("span").hasClass("ui-icon-blank") ) {
$(this).find('label')[0].click();
}
}else
if( $(this).find("span").hasClass("ui-icon-check") ){
$(this).find('label')[0].click();
}
}
})
};
在视图中只需调用'selectAllBtn()';
<p:commandButton id="togglerColTab" type="button"
title="#{msg.label_collumns}" icon="fa fa-columns"
onclick="selectAllBtn();" styleClass="btnFilterCol " />