Quantcast
Channel: Telerik Forums RSS
Viewing all articles
Browse latest Browse all 99250

Kendo Grid Filter Posting Twice

$
0
0

Ok so I have a kendo grid. Leaving off the definition to make not so long, but I do have autoBind: false on it. I then do the 3 functions below to add a custom multi-select filter to one column. The other thing I have is I set an initial filter on that same column in the grid definition. The problem I am having is that filter gets called twice, once with correct params and a 2nd time with the original filter, or if I have that original filter commented out; it will call it the second time using any other column filters on the grid you have set in the ui, but without using the custom filter on this one column.

I've spent all day and night trying to figure this out... Any ideas.

 

01.self.onSchemaPopulated = function(columns, model) {
02. 
03.        varmeasureKey = _.find(columns, function(item) {
04.            returnitem.field === 'measure_key';
05.        });
06. 
07.        measureKey.filterable =
08.            {
09.                extra: false,
10.                operators: {
11.                    string: {                          
12.                        eq: "Is equal to"                          
13.                    }
14.                },
15.                ui: self.measureKeyFilter                  
16.            };
17. 
18.    };
19. 
20.    self.measureKeyFilter = function(element) {
21. 
22.        element.removeAttr("data-bind");
23. 
24.        varmenu = $(element).parent();
25. 
26.        menu.find(".k-filter-help-text").text("Show records for measure keys in:");
27.        menu.find("[data-role=dropdownlist]").remove();
28. 
29.        varmultiSelect = element.kendoMultiSelect({
30.            dataBound: function(e) {
31.                e.sender.tagList.addClass('k-full-button');
32.                e.sender.ul.addClass('k-multiselect-items');
33.            },
34.            dataSource: _.invoke(self.itemSelected().measures(), 'measure_key'),
35.            tagMode: 'single',
36.            tagTemplate: '<div>#:values.length# measures selected...</div>',
37.            value: _.invoke(self.itemSelected().checkedMeasures(), 'measure_key'),
38.        }).data("kendoMultiSelect");
39. 
40.        menu.find("[type=submit]").on("click", { widget: multiSelect }, self.filterByMeasureKey);
41. 
42.    };
43. 
44.    self.filterByMeasureKey = function(e) {
45. 
46.        varnewFilter = { logic: "and", filters: [] };
47.        varmeasureFilter = null;
48.        varvalues = e.data.widget.value();
49. 
50.        if(values.length !== self.itemSelected().measures().length) {
51. 
52.            measureFilter = { logic: "or", filters: [] };
53. 
54.            $.each(values, function(i, v) {
55.                measureFilter.filters.push({ field: "measure_key", operator: "eq", value: v });
56.            });
57. 
58.            newFilter.filters.push(measureFilter);
59. 
60.        };
61. 
62.        vargrid;
63. 
64.        if(self.isRelationshipSummaryToggled()) {
65.            grid = $('#'+ self.rsOptions.id).data("kendoGrid");
66.        } else{
67.            grid = $('#'+ self.rdOptions.id).data("kendoGrid");
68.        };
69. 
70.        varcurrentFilters = grid.dataSource.filter();
71. 
72.        if(!isNull(currentFilters)) {             
73. 
74.            _.each(currentFilters.filters, function(x) {                  
75. 
76.                if(!_.isArray(x.filters)) {
77.                    newFilter.filters.push(x);
78.                } elseif(x.filters[0].field !== 'measure_key') {
79.                    newFilter.filters.push(x);
80.                };
81. 
82.            });                
83. 
84.        };         
85. 
86.        grid.dataSource.filter(newFilter);
87. 
88.    };

Viewing all articles
Browse latest Browse all 99250

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>