2017-02-09 246 views
0

我无法在每列上使用搜索过滤器实现treegrid。在简单的用户界面论坛上,他们告诉'datagrid-Filter.js'也适用于treegrid。我已经使用了它们在客户端分页中使用的相同代码http://www.jeasyui.com/demo/main/index.php?plugin=TreeGrid&theme=default&dir=ltr&pitem=Easy UI Treegrid在所有列上都有搜索过滤器

过滤器输入元素即将到来,但它们不会过滤任何数据。我添加了我开发的代码。请帮我解决这个问题,感谢名单

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>Client Side Pagination in TreeGrid - jQuery EasyUI Demo</title> 
 
    <link rel="stylesheet" type="text/css" href="css/themes/default/easyui.css"> 
 
    <link rel="stylesheet" type="text/css" href="css/themes/icon.css"> 
 
    <link rel="stylesheet" type="text/css" href="css/demo.css"> 
 
    <script type="text/javascript" src="js/jquery.min.js"></script> 
 
    <script type="text/javascript" src="js/jquery.easyui.min.js"></script> 
 
    <script type="text/javascript" src="datagrid-filter.js"></script> 
 
    
 
</head> 
 
<body> 
 
    <h2>Client Side Pagination in TreeGrid</h2> 
 
    <p>This sample shows how to implement client side pagination in TreeGrid.</p> 
 
    <div style="margin:20px 0;"></div> 
 
    <table id="tg" title="Client Side Pagination" style="width:700px;height:250px" 
 
      data-options=" 
 
       iconCls: 'icon-ok', 
 
       rownumbers: true, 
 
       animate: true, 
 
       collapsible: true, 
 
       fitColumns: true, 
 
       url: 'treegrid_data2.json', 
 
       method: 'get', 
 
       idField: 'id', 
 
       treeField: 'name', 
 
       pagination: true, 
 
       remoteFilter: false, 
 
       pageSize: 2, 
 
       pageList: [2,5,10] 
 
      "> 
 
     <thead> 
 
      <tr> 
 
       <th data-options="field:'name',width:180">Task Name</th> 
 
       <th data-options="field:'persons',width:60,align:'right'">Persons</th> 
 
       <th data-options="field:'begin',width:80">Begin Date</th> 
 
       <th data-options="field:'end',width:80">End Date</th> 
 
       
 
      </tr> 
 
     </thead> 
 
    </table> 
 
    <script type="text/javascript"> 
 
     //** client pagination by EASY UI**// 
 
     (function($){ 
 
      function pagerFilter(data){ 
 
       if ($.isArray(data)){ // is array 
 
        data = { 
 
         total: data.length, 
 
         rows: data 
 
         
 
        } 
 
       } 
 
       var target = this; 
 
       var tg = $(target); 
 
       var state = tg.data('treegrid'); 
 
       var opts = tg.treegrid('options'); 
 
       if (!state.allRows){ 
 
        state.allRows = data.rows; 
 
       } 
 
       if (!opts.remoteSort && opts.sortName){ 
 
        var names = opts.sortName.split(','); 
 
        var orders = opts.sortOrder.split(','); 
 
        state.allRows.sort(function(r1,r2){ 
 
         var r = 0; 
 
         for(var i=0; i<names.length; i++){ 
 
          var sn = names; 
 
          var so = orders; 
 
          var col = $(target).treegrid('getColumnOption', sn); 
 
          var sortFunc = col.sorter || function(a,b){ 
 
           return a==b ? 0 : (a>b?1:-1); 
 
          }; 
 
          r = sortFunc(r1[sn], r2[sn]) * (so=='asc'?1:-1); 
 
          if (r != 0){ 
 
           return r; 
 
          } 
 
         } 
 
         return r; 
 
        }); 
 
       } 
 
       var topRows = []; 
 
       var childRows = []; 
 
       $.map(state.allRows, function(row){ 
 
        row._parentId ? childRows.push(row) : topRows.push(row); 
 
        row.children = null; 
 
       }); 
 
       data.total = topRows.length; 
 
       var pager = tg.treegrid('getPager'); 
 
       pager.pagination('refresh', { 
 
        total: data.total, 
 
        pageNumber: opts.pageNumber 
 
       }); 
 
       opts.pageNumber = pager.pagination('options').pageNumber || 1; 
 
       var start = (opts.pageNumber-1)*parseInt(opts.pageSize); 
 
       var end = start + parseInt(opts.pageSize); 
 
       data.rows = topRows.slice(start, end).concat(childRows); 
 
       return data; 
 
      } 
 
    
 
      var appendMethod = $.fn.treegrid.methods.append; 
 
      var removeMethod = $.fn.treegrid.methods.remove; 
 
      var loadDataMethod = $.fn.treegrid.methods.loadData; 
 
      $.extend($.fn.treegrid.methods, { 
 
       clientPaging: function(jq){ 
 
        return jq.each(function(){ 
 
         var tg = $(this); 
 
         var state = tg.data('treegrid'); 
 
         var opts = state.options; 
 
         opts.loadFilter = pagerFilter; 
 
         var onBeforeLoad = opts.onBeforeLoad; 
 
         opts.onBeforeLoad = function(row,param){ 
 
          state.allRows = null; 
 
          return onBeforeLoad.call(this, row, param); 
 
         } 
 
         var pager = tg.treegrid('getPager'); 
 
         pager.pagination({ 
 
          onSelectPage:function(pageNum, pageSize){ 
 
           opts.pageNumber = pageNum; 
 
           opts.pageSize = pageSize; 
 
           pager.pagination('refresh',{ 
 
            pageNumber:pageNum, 
 
            pageSize:pageSize 
 
           }); 
 
           tg.treegrid('loadData',state.allRows); 
 
          } 
 
         }); 
 
         tg.treegrid('loadData', state.data); 
 
         if (opts.url){ 
 
          tg.treegrid('reload'); 
 
         } 
 
        }); 
 
       }, 
 
       loadData: function(jq, data){ 
 
        jq.each(function(){ 
 
         $(this).data('treegrid').allRows = null; 
 
        }); 
 
        return loadDataMethod.call($.fn.treegrid.methods, jq, data); 
 
       }, 
 
       append: function(jq, param){ 
 
        return jq.each(function(){ 
 
         var state = $(this).data('treegrid'); 
 
         if (state.options.loadFilter == pagerFilter){ 
 
          $.map(param.data, function(row){ 
 
           row._parentId = row._parentId || param.parent; 
 
           state.allRows.push(row); 
 
          }); 
 
          $(this).treegrid('loadData', state.allRows); 
 
         } else { 
 
          appendMethod.call($.fn.treegrid.methods, $(this), param); 
 
         } 
 
        }) 
 
       }, 
 
       remove: function(jq, id){ 
 
        return jq.each(function(){ 
 
         if ($(this).treegrid('find', id)){ 
 
          removeMethod.call($.fn.treegrid.methods, $(this), id); 
 
         } 
 
         var state = $(this).data('treegrid'); 
 
         if (state.options.loadFilter == pagerFilter){ 
 
          for(var i=0; i<state.allRows.length; i++){ 
 
           if (state.allRows[state.options.idField] == id){ 
 
            state.allRows.splice(i,1); 
 
            break; 
 
           } 
 
          } 
 
          $(this).treegrid('loadData', state.allRows); 
 
         } 
 
        }) 
 
       }, 
 
       getAllRows: function(jq){ 
 
        return jq.data('treegrid').allRows; 
 
       } 
 
      }); 
 
    
 
     })(jQuery); 
 
    
 
     function formatProgress(value){ 
 
      if (value){ 
 
       var s = '<div style="width:100%;border:1px solid #ccc">' + 
 
         '<div style="width:' + value + '%;background:#cc0000;color:#fff">' + value + '%' + '</div>' 
 
         '</div>'; 
 
       return s; 
 
      } else { 
 
       return ''; 
 
      } 
 
     } 
 
// ** end of cleint pagination **//   
 
     $(function(){ 
 
///////////////////////////////////////////////////////////////////////   
 
      $('#tg').treegrid().treegrid('clientPaging'); 
 
///////////////////////////////////////////////////////////////////////// 
 
      $('#tg').treegrid('enableFilter', [{ 
 
       field:'name', 
 
       type:'validatebox', 
 
       op:['contains'] 
 
       }]); 
 
//////////////////////////////////////////////////////////////////////// 
 
     }) 
 
    </script> 
 
</body> 
 
</html>

提前。

回答

0

你好,我想出了什么问题。 该解决方案适用于我。

<%@page import="org.apache.log4j.Logger"%> 
<%@page import="com.development.util.CustomLogger"%> 
<%@page import="com.development.util.CommonUtility"%> 
<%@page import="com.agile.api.IAgileSession"%> 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html> 
<html> 
<head> 
<meta charset=utf-8 /> 
    <link rel="stylesheet" type="text/css" href="css/themes/default/easyui.css"> 
    <link rel="stylesheet" type="text/css" href="css/themes/icon.css"> 
    <link rel="stylesheet" type="text/css" href="css/themes/color.css"> 
    <link rel="stylesheet" type="text/css" href="css/overlay.css"> 
    <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script> 
    <script type="text/javascript" src="js/jquery.easyui.min.js"></script> 
    <script type="text/javascript" src="js/datagrid-filter.js"></script> 

</head> 
<body> 
<div id="tablediv"> 
<table id="tg" title="Client Side Pagination" style="height:600px;width:100%;"> 
    <thead> 
<tr> 
    <th data-options="field:'name',width:'30%'">Task Name</th> 
    <th data-options="field:'persons',width:80,sortable:true,align:'right'">Persons</th> 
    <th data-options="field:'begin',width:80">Begin Date</th> 
    <th data-options="field:'end',width:'10%'">End Date</th> 
    <th data-options="field:'progress',width:'10%'">Progress</th> 
</tr> 
    </thead> 
</table> 
</div> 
</body> 
<script> 
var data = {"total":7,"rows":[ 
    {"id":1,"name":"All Tasks","begin":"3/4/2010","end":"3/20/2010","progress":60,"iconCls":"icon-ok"}, 
{"id":2,"name":"Designing","begin":"3/4/2010","end":"3/10/2010", 
"progress":100,"_parentId":1,"state":"closed"}, 
     {"id":21,"name":"Database","persons":2,"begin":"3/4/2010","end":"3/6/2010","progress":100,"_parentId":2}, 
    {"id":22,"name":"UML","persons":1,"begin":"3/7/2010","end":"3/8/2010","progress":100,"_parentId":2}, 
    {"id":23,"name":"Export Document","persons":1,"begin":"3/9/2010","end":"3/10/2010","progress":100,"_parentId":2}, 
    {"id":3,"name":"Coding","persons":2,"begin":"3/11/2010","end":"3/18/2010","progress":80}, 
    {"id":4,"name":"Testing","persons":1,"begin":"3/19/2010","end":"3/20/2010","progress":20} 
],"footer":[ 
    {"name":"Total Persons:","persons":7,"iconCls":"icon-sum"} 
]}; 
$(function(){ 
    var tg = $('#tg').treegrid({ 
    idField: 'id', 
    treeField: 'name', 
    remoteFilter: false, 
    pagination: true, 
    pageSize: 2, 
    pageList: [2,5,10], 
    data: data 
    }); 
    tg.treegrid('enableFilter').treegrid('doFilter'); 

}); 
</script> 
</html>