【问题标题】:extjs4 : chained comboextjs4:链式组合
【发布时间】:2012-05-19 01:14:35
【问题描述】:

我正在尝试将一些动态数据添加到“实时搜索”组合框中。

我有一套 2 个连击。

第一个允许您选择一些数据。 第二个组合是一个“livesearch”组合,它应该具有来自第一个组合的动态参数。 因此,第二个组合链接到模型,该模型链接到查询服务器并输出数据的数据存储。但是必须根据第一个组合参数过滤该数据...

有人知道怎么做吗?

【问题讨论】:

    标签: combobox extjs4


    【解决方案1】:

    我做到了before。关键是将第一个组合的值与第二个组合的值的请求一起传递,然后在服务器上过滤结果。其他方法是使用所有可能的值加载两个组合,然后在第一个组合中选择一个值后在第二个组合的存储上设置一个过滤器。

    编辑:这是我使用的。

    Ext.define('Ext.ux.FilteredCombo', {
    extend: 'Ext.form.field.ComboBox',
    alias: 'widget.filteredcombo',
    
    queryCaching: false,
    
    getParams: function (queryString) {
        var params = this.callParent(arguments);
        if (Ext.isArray(this.formParams)) {
            var form = this.up('form');
            if (form) {
                var bf = form.getForm();
                for (var i = 0; i < this.formParams.length; i++) {
                    var field = bf.findField(this.formParams[i]);
                    if (field)
                        params[this.formParams[i]] = field.getValue();
                }
            }
        }
        return params;
    }
    });
    

    【讨论】:

    • 是的,将组合的值传递给数据存储区发出的请求是我想要的。我可以获得组合值,我可以从服务器获取数据到数据存储区,但是当用户开始向组合框输入文本时,我无法动态更新数据存储区参数。例如,当用户单击某些内容时,我可以使用新参数重新加载数据存储,因为我自己处理存储重新加载,但存储重新加载可能由组合处理。我重写那部分代码,但那会很丑……
    • 要解决重新加载问题,请在您的商店配置中添加 queryCaching: false。另外,我添加了我在示例中使用的代码。
    猜你喜欢
    • 2012-03-08
    • 2023-03-29
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多