Apr 29, 2014, 3:51 PM
[CLOSED] Dynamically loading GridFilters causes multiple load events
I need to preset the filter values when a page is initially loaded. The problem I am having is I cannot turn off the load request theis generated by setting these filter values.
I am using MVC.Ext.Net with razor.
Initially I was having 3 loads until I added true to grid.filters.clearFilters(true);
Now I only have two.
I have tried turning off remote filter on the store during the setup
var store = Ext.getCmp('store_gridList');
I tried tried suspending ane restoring events
The store does not load if I set autoload = false
The store does not load if I add return false to
.Listeners(l => l.BeforeLoad.Handler = @"set_filters();return false;")
so is there a method that allows for setting the initial value of the filter that does not involve triggering the reload of the store???
Thanking you'all in advance.
Any help will be appreciated!
Cyndi Pruett
Here is an outline of the code.
Html.X().GridPanel().ID("gridList")
.Store(Html.X().Store().ID("store_gridList").Liste ners(l => l.BeforeLoad.Handler = @"set_filters();").AutoLoad(true)
var first = true;
function set_filters() {
function setFilter(filters, filtername, filtervalue, comparisonvalue) {
var filter = filters.getFilter(filtername);
if (filtervalue != "") {
}
I am using MVC.Ext.Net with razor.
Initially I was having 3 loads until I added true to grid.filters.clearFilters(true);
Now I only have two.
I have tried turning off remote filter on the store during the setup
var store = Ext.getCmp('store_gridList');
store.remoteFilter = false;
?code to set filters
store.remoteFilter = true;
Still two loads.?code to set filters
store.remoteFilter = true;
I tried tried suspending ane restoring events
grid.suspendEvents();
?code to set filters
grid.resumeEvents();
Still two loads??code to set filters
grid.resumeEvents();
The store does not load if I set autoload = false
The store does not load if I add return false to
.Listeners(l => l.BeforeLoad.Handler = @"set_filters();return false;")
so is there a method that allows for setting the initial value of the filter that does not involve triggering the reload of the store???
Thanking you'all in advance.
Any help will be appreciated!
Cyndi Pruett
Here is an outline of the code.
Html.X().GridPanel().ID("gridList")
.Store(Html.X().Store().ID("store_gridList").Liste ners(l => l.BeforeLoad.Handler = @"set_filters();").AutoLoad(true)
var first = true;
function set_filters() {
if (first) { //as to not fire on subsequent changed of filters
first = false;
}
var grid = Ext.getCmp('gridList');
grid.suspendEvents();
grid.filters.clearFilters(true);
var filters = grid.getFilterPlugin(); //filters;
setFilter(filters, 'Machine_Prefix', ?,AB,AC,AD,?, ''); //this is a type of list
?more setFilter values?
grid.resumeEvents();
}grid.suspendEvents();
grid.filters.clearFilters(true);
var filters = grid.getFilterPlugin(); //filters;
setFilter(filters, 'Machine_Prefix', ?,AB,AC,AD,?, ''); //this is a type of list
?more setFilter values?
grid.resumeEvents();
first = false;
}
function setFilter(filters, filtername, filtervalue, comparisonvalue) {
var filter = filters.getFilter(filtername);
if (filtervalue != "") {
switch (filter.type) {
} case "boolean":
break;
break;
case "numeric":
filter.menu.items.each(function (item) {
if (item instanceof Ext.form.NumberField) {
if (comparisonvalue == "") {
filter.setValue(filtervalue);
filter.setActive(true);
}
else
{
switch (comparisonvalue) {
case 'gt':
filter.setValue({ gt: filtervalue }); //numeric filter
break;
case 'lt':
filter.setValue({ lt: filtervalue }); //numeric filter
break;
case 'eq':
filter.setValue({ eq: filtervalue }); //numeric filter
break;
}
filter.setActive(true);
}
}
});
break;if (item instanceof Ext.form.NumberField) {
if (comparisonvalue == "") {
filter.setValue(filtervalue);
filter.setActive(true);
}
else
{
switch (comparisonvalue) {
case 'gt':
filter.setValue({ gt: filtervalue }); //numeric filter
break;
case 'lt':
filter.setValue({ lt: filtervalue }); //numeric filter
break;
case 'eq':
filter.setValue({ eq: filtervalue }); //numeric filter
break;
}
filter.setActive(true);
}
}
});
case "date":
filter.menu.items.each(function (item) {
if (item instanceof Ext.menu.CheckItem) {
var itemText = item.text.toLowerCase();
var picker = filter.getPicker(itemText);
var dateValue = ReturnDate(filtervalue);
var boolSet = false;
if (comparisonvalue.indexOf('gt') > -1 && itemText == "after") {
boolSet = true;
} else if (comparisonvalue.indexOf('lt') > -1 && itemText == "before") {
boolSet = true;
} else if (comparisonvalue.indexOf('eq') > -1 && itemText == "on") {
boolSet = true;
}
if (boolSet) {
picker.setValue(dateValue);
filter.values[itemText] = dateValue;
filter.setActive(true);
item.setChecked(true);
}
}
});
break;if (item instanceof Ext.menu.CheckItem) {
var itemText = item.text.toLowerCase();
var picker = filter.getPicker(itemText);
var dateValue = ReturnDate(filtervalue);
var boolSet = false;
if (comparisonvalue.indexOf('gt') > -1 && itemText == "after") {
boolSet = true;
} else if (comparisonvalue.indexOf('lt') > -1 && itemText == "before") {
boolSet = true;
} else if (comparisonvalue.indexOf('eq') > -1 && itemText == "on") {
boolSet = true;
}
if (boolSet) {
picker.setValue(dateValue);
filter.values[itemText] = dateValue;
filter.setActive(true);
item.setChecked(true);
}
}
});
case "list":
filter.menu.items.each(function (item) {
//alert(item.value + " " + filtervalue.indexOf(item.value));
if (filtervalue.indexOf(item.value) > -1) {
item.setChecked(true);
filter.setActive(true);
}
});
break;//alert(item.value + " " + filtervalue.indexOf(item.value));
if (filtervalue.indexOf(item.value) > -1) {
item.setChecked(true);
filter.setActive(true);
}
});
case "string":
}; filter.menu.items.each(function (item) {
filter.setValue(filtervalue);
filter.setActive(true);
});
break;filter.setValue(filtervalue);
filter.setActive(true);
});
}
Last edited by Daniil; Jun 13, 2014 at 10:10 AM.
Reason: [CLOSED]