2015-07-09 10 views
0

Я использовал код ниже, чтобы загрузить пятно сетки внутри тега div, это работает отлично, но я хочу играть больше функциональности в пятно сетке. Как удалить все фильтры одним нажатием кнопки?Как очистить все фильтры при нажатии кнопки одного щелчка в сетке slick


function LoadSlickGrid(txtHRMFilter) { 
     $(function() { 
      //debugger; 
      var data = []; 


$.ajax({ 
         url: '/Home/GetDetails/?strHRMFilter=' + txtHRMFilter, 
         dataType: "json", 
         type: "POST", 
         async: false, 
         contentType: "application/json", 
         success: function (result) { 
          data = result.desc; 

         } 
        }); 



      var dataView = new Slick.Data.DataView(); 

      grid = new Slick.Grid("#grid", dataView, columns, options); 

      grid.setSelectionModel(new Slick.CellSelectionModel()); 

      dataView.onRowCountChanged.subscribe(function (e, args) { 
       grid.updateRowCount(); 
       grid.render(); 
      }); 

      dataView.onRowsChanged.subscribe(function (e, args) { 
       grid.invalidateRows(args.rows); 
       grid.render(); 
      }); 

      dataView.beginUpdate(); 
      dataView.setItems(data); 
      dataView.setFilter(filter); 
      dataView.endUpdate(); 
      dataView.refresh(); 
      var filterPlugin = new Ext.Plugins.HeaderFilter({}); 

      filterPlugin.onFilterApplied.subscribe(function() { 
       dataView.refresh(); 
       grid.resetActiveCell(); 

       var status; 

       if (dataView.getLength() === dataView.getItems().length) { 
        status = ""; 
       } else { 
        status = dataView.getLength() + ' OF ' + dataView.getItems().length + ' RECORDS FOUND'; 
       } 
       $('#status-label').text(status); 

      }); 
      var pager = new Slick.Controls.Pager(dataView, grid, $("#pager")); 
      filterPlugin.onCommand.subscribe(function (e, args) { 
       dataView.fastSort(args.column.field, args.command === "sort-asc"); 
      }); 

      grid.registerPlugin(filterPlugin); 

      var overlayPlugin = new Ext.Plugins.Overlays({}); 

      // Event fires when a range is selected 
      overlayPlugin.onFillUpDown.subscribe(function (e, args) { 
       var column = grid.getColumns()[args.range.fromCell]; 

       // Ensure the column is editable 
       if (!column.editor) { 
        return; 
       } 

       var value = dataView.getItem(args.range.fromRow)[column.field]; 

       dataView.beginUpdate(); 

       for (var i = args.range.fromRow + 1; i <= args.range.toRow; i++) { 
        dataView.getItem(i)[column.field] = value; 
        grid.invalidateRow(i); 
       } 

       dataView.endUpdate(); 
       grid.render(); 
      }); 

      grid.setSelectionModel(new Slick.RowSelectionModel({ selectActiveRow: false })); 
      grid.registerPlugin(checkboxSelector); 

      grid.registerPlugin(overlayPlugin); 

      grid.init(); 

      function filter(item) { 
       var columns = grid.getColumns(); 
       var value = true; 

       for (var i = 0; i < columns.length`enter code here`; i++) { 
        var col = columns[i]; 
        var filterValues = col.filterValues; 

        if (filterValues && filterValues.length > 0) { 
         value = value & _.contains(filterValues, item[col.field]); 
        } 
       } 
       return value; 
      } 
     }); 
    } 

-------------------------------- 

Теперь я хочу, чтобы очистить все фильтры с одной кнопкой мыши в slickgrid.

$("#btnclear").click(function() { 
      ClearSlickGrid(); 
}); 

Как я могу это достичь? Спасибо заранее.

ответ

1

Вы можете просто установить чистый фильтр:

$("#btnclear").click(function() { 
    dataView.setFilter(function(item){ 
     return true; 
    } 
}); 

Если вы хотите, чтобы повторно применить свой старый фильтр просто позвоните:

dataView.setFilter(filter); 
+0

Спасибо за ваш ответ. при нажатии кнопки «btnclear» работает нормально, но после того, как я не смогу снова фильтровать. –

+0

Спасибо за ваш ответ. при нажатии кнопки «btnclear» работает нормально, но после того, как я не смогу снова фильтровать. значок фильтра все еще виден после очистки фильтра. –

+0

Не могли бы вы настроить скрипку или отправить ссылку на живой пример? Вам нужно будет переназначить функцию фильтра, если вы хотите снова фильтровать. –