Ошибка функции фильтров ExtJS - PullRequest
1 голос
/ 24 января 2012

Я новичок в 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 голосов
/ 06 сентября 2013

У меня это работает так:

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'

Надеюсь, это поможет!

0 голосов
/ 25 января 2012

Javascript не имеет области действия уровня блока, поэтому переменные, определенные в цикле for, фактически определяются в верхней части функции (подняты) и сохраняются в циклах.Таким образом, вы всегда перезаписываете переменные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...