Apr 15, 2011, 8:56 PM
[CLOSED] Grid Filters Dynamic
How can I dynamically create the filters functions that are within the
by codbehind.
by codbehind.
<ext:XScript runat="server">
<script type="text/javascript">
var applyFilter = function (field) {
if(field){
var id = field.id,
task = new Ext.util.DelayedTask(function(){
var f = Ext.getCmp(id);
f.focus();
f.el.dom.value = f.el.dom.value;
});
task.delay(100);
}
#{GridPanel1}.getStore().filterBy(getRecordFilter());
};
var clearFilter = function () {
#{ComboBox1}.reset();
#{PriceFilter}.reset();
#{ChangeFilter}.reset();
#{PctChangeFilter}.reset();
#{LastChangeFilter}.reset();
#{GridPanel1}.getStore().clearFilter();
}
var filterString = function (value, dataIndex, record) {
var val = record.get(dataIndex);
if (typeof val != "string") {
return value.length == 0;
}
return val.toLowerCase().indexOf(value.toLowerCase()) > -1;
};
var filterDate = function (value, dataIndex, record) {
var val = record.get(dataIndex).clearTime(true).getTime();
if (!Ext.isEmpty(value, false) && val != value.clearTime(true).getTime()) {
return false;
}
return true;
};
var filterNumber = function (value, dataIndex, record) {
var val = record.get(dataIndex);
if (!Ext.isEmpty(value, false) && val != value) {
return false;
}
return true;
};
var getRecordFilter = function () {
var f = [];
f.push({
filter: function (record) {
return filterString(#{ComboBox1}.getValue(), 'company', record);
}
});
f.push({
filter: function (record) {
return filterNumber(#{PriceFilter}.getValue(), 'price', record);
}
});
f.push({
filter: function (record) {
return filterNumber(#{ChangeFilter}.getValue(), 'change', record);
}
});
f.push({
filter: function (record) {
return filterNumber(#{PctChangeFilter}.getValue(), 'pctChange', record);
}
});
f.push({
filter: function (record) {
return filterDate(#{LastChangeFilter}.getValue(), 'lastChange', record);
}
});
var len = f.length;
return function (record) {
for (var i = 0; i < len; i++) {
if (!f[i].filter(record)) {
return false;
}
}
return true;
};
};
</script>
</ext:XScript>
Last edited by Daniil; Apr 25, 2011 at 8:09 AM.
Reason: [CLOSED]