当用户选择 data-table 所有单独的复选框列切换器时如何检查 SelectAll?

How to check SelectAll when user selects the data-table all individual check-box column toggler?

根据 <p:columnToggler> 中的列选择显示数据 table 中的列。

在该列选择中,当我单独选中所有复选框时,应该选中 selectAll。

如何在用户单独选择数据-table所有复选框列切换器时检查Select全部?

数据中的切换代码table:

<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>

要添加的代码 Select 列中的所有复选框 Selection:

function addSelectAll(){
    $("#li_togglerSelectAll")&amp;&amp;
    $("#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") &amp;&amp; $(this).click():$(this).hasClass("ui-icon-check") &amp;&amp; $(this).click()
    })
}

将函数绑定到切换器的点击事件,以检查是否选择了所有项目。

像这样的东西:

function addSelectAll(){
    $("#li_togglerSelectAll")&amp;&amp;
    $("#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); }
    })
}

解决方法如下:

SelectAll 当用户选择 data-table 所有单独的 check-box 列切换器时

<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")&amp;&amp;
                    (       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);
       } 

我已经用类似的方式实现了

  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 "  />