ExtJS过滤器功能错误

时间:2012-01-24 13:24:55

标签: extjs filter

我是ExtJS的新手,我正在尝试在ExTJS网格中包含过滤器,但是我收到错误,例如加载文件“feature.filters”失败。下面是我创建Grid的函数,我从另一个HTML页面调用此函数。

function ExtJSGrid(tableId,headerInfo,data){

Ext.Loader.setConfig({enabled: true});
Ext.Loader.setPath('Ext.ux', 'http://vmxplambardi:19086/teamworks/script/extjs/examples/ux');
Ext.require([
    'Ext.grid.*',
    'Ext.data.*',
    'Ext.ux.grid.FiltersFeature',
    'Ext.toolbar.Paging'
]);


var tableId=tableId+"-div";
var fields=[],columns=[],dataIndex='cell';
var filters = {
        ftype: 'filters',
        local:true,
       filters: [{
            type: 'string',
            dataIndex: 'cell1'
        }, {
             type: 'string',
            dataIndex: 'cell2'
        }, {
             type: 'string',
            dataIndex: 'cell3'
        }]
    };

document.getElementById(tableId).innerHTML='';
for(var i=1;i<=headerInfo.length;i++)
{

var cellObj={},columnObj={};

cellObj.name=dataIndex+i;

fields.push(cellObj);

columnObj.text=headerInfo[i-1];

columnObj.dataIndex=dataIndex+i;

columns.push(columnObj);
}

var store = Ext.create('Ext.data.ArrayStore', {

        fields:fields,

         data: data

    });

var grid = Ext.create('Ext.grid.Panel', {

        store: store, 
        columns:columns,
    width:'100%',
    forceFit:true,
    features: [filters],
        renderTo: tableId

        });
}

如果我遗失了什么,请告诉我?

2 个答案:

答案 0 :(得分:0)

Javascript没有块级范围,因此for循环中定义的变量实际上定义在函数的顶部(提升)并在循环中存活。所以你总是覆盖变种。

答案 1 :(得分:0)

我的工作方式如下:

var filters = {
    ftype: 'filters',
    // encode and local configuration options defined previously for easier reuse
    encode: false, // json encode the filter query
    local: true,   // defaults to false (remote filtering)

    // Filters are most naturally placed in the column definition, but can also be
    // added here.
    filters: [
        {
            type: 'boolean',
            dataIndex: 'visible' //Just an example
        }
    ]
};

var myFilterGrid = new Ext.create('Ext.ux.LiveSearchGridPanel', {
    title: 'someTitle',
    selType: 'cellmodel',
    store: myStore,
    columns:[
        {
            header: "Column1",
            width: 90,
            sortable: true,
            dataIndex: 'INDEX1',
            filterable: true,  //<---
            filter:{           //<---
                type:'string'  
            }
        },
        ....
        {
            header: "Another Column",
            width: 85,
            sortable: true,
            dataIndex: 'INDEX2'
        }],
    features: [filters]  //<---
  });

一定要包括

'Ext.ux.grid.FiltersFeature'

希望这有帮助!