Php ExtJS 4基于更改选择制作更动态的过滤器

Php ExtJS 4基于更改选择制作更动态的过滤器,php,extjs,Php,Extjs,我真的很难理解不同类型的过滤器,以及何时和如何使用它们,所以我决定从头开始,慢慢增加难度。我尝试了从ExtJS4文档中得到的最简单的过滤器,我有一个控制器、一个stroe、一个模型和一个视图,我的后端使用CodeIgnaiter。因为我想自下而上我所做的是: Ext.define('ABC.store.FilterRecordsByForm', { extend: 'Ext.data.Store', model: 'ABC.model.FormRecord', aut

我真的很难理解不同类型的过滤器,以及何时和如何使用它们,所以我决定从头开始,慢慢增加难度。我尝试了从ExtJS4文档中得到的最简单的过滤器,我有一个控制器、一个stroe、一个模型和一个视图,我的后端使用CodeIgnaiter。因为我想自下而上我所做的是:

Ext.define('ABC.store.FilterRecordsByForm', {

    extend: 'Ext.data.Store',
    model: 'ABC.model.FormRecord',

    autoLoad: true,
//  autoSync: true,
//  remoteFilter: true,
//  remoteSort: false,

    proxy: {
        type: 'ajax',
        actionMethods: 'POST',
        api: {
         read:  g_settings.baseUrl + 'index.php/record/getRecordsListByForms'


        },
        reader :{
            type: 'json',
            root: 'data',
            idProperty: 'id',
            successProperty: 'success'
        }
    },

        filters: [
        {
            property: 'procedure_id',
            value   : 3
        }
    ]

});
因此,这里我只使用ExtJS4文档中的示例,并在stroe中硬编码我的过滤器。到现在为止,一直都还不错。它按预期工作。但是现在我想让我的
value
字段获得一个变量作为值,并在每次更改
vlue
字段的值时重新加载过滤器。我有点搞不清楚在这里和哪里使用Ext filter的确切实现。我想我应该把它放在控制器中,但是我不知道如何更改我的过滤器以响应它得到的新值,我必须对服务器端代码进行更改还是只能在客户端进行更改

谢谢


Leron

如果您的商店将remoteFiler设置为true,您可以执行以下操作:

store.clearFilter();
store.filter('procedure_id', new_value);

这将导致应用商店根据新过滤器重新加载其内容。

你好,沙,很高兴见到你。我现在做的是:
comboxfilterst.clearFilter(true);comboBoxFilterSt.filter({filterFn:function(item){return item.get('category_id')==sel.raw.categoryId;}}})
;如果我排除一些小问题,它会根据需要工作。问题是我更喜欢远程排序,所以我尝试了以下方法:comboBoxFilterSt.filters.clear();comboBoxFilterSt.filters.add(Ext.create('Ext.util.Filter'),…您的建议是第三个选项,您能告诉我与Ext.create的区别吗('Ext.util.Filter和您\n的建议?您希望过滤器是远程的。因此,基本上您不需要过滤器中的任何JS逻辑,您只需要将过滤器作为附加参数传递到查询中。是的,这是我的过滤最终应该是什么样子,但我试图理解实现它的步骤,因此您可以更具体地说明d我应该如何使用您在评论中编写的代码。在处理程序中、侦听器中或在需要筛选存储时触发和事件。您可能希望查看ExtJs中的
filter()
方法实现。它将非常清楚地支持不同类型的参数(基本上,它可以处理对象、数组或“fieldname”、“valuename”对)