使用商店远程过滤器

时间:2015-08-21 07:48:41

标签: javascript extjs combobox

我有两个组合框。在第一个组合中,控制器中有select事件,它添加了过滤器来获取第二个组合的数据:

      secondComboStore.remoteFilter = true;
    filters.push({property: 'Id', value: combo.getValue()});

我希望在客户端基于键入字符的第二个组合过滤器,但问题是在我键入的每个字符上,请求被发送到我不想要的服务器。 这是第二个组合:

        xtype: 'combo',
        name: 'SomeName', 
        itemId: 'someNameId',
        fieldLabel: 'name',
        editable: true,
        allowBlank: false,
        queryParam: false,
        valueField: 'someId',
        displayField: 'someName',
        store: 'mySecondStore'

在那个商店中,我只定义了在读取时调用的模型和服务器端服务。 到目前为止,我已经尝试将queryParam设置为false并将queryMode设置为local,但请求仍然发送到服务器。 我也试过mySecondStore的load事件将remoteFilter设置为false,但是在组合中没有显示数据。

编辑: 如果我把这些行放在商店加载事件上:

        this.clearFilter(true);
        this.remoteFilter=false;

仅在首次加载商店时才有效。当它再次加载时,我开始输入时不会过滤组合中的值。

2 个答案:

答案 0 :(得分:1)

editable设为false。当你有一组有限的选择时,为什么你需要在第二个组合中进行编辑?

编辑: 使用单独的商店加载过滤后的数据。然后将其复制到设置为 local 模式的mySecondStore。将editable设为true

答案 1 :(得分:0)

将这两个属性用于第二个组合。

typeAhead: true,
forceSelection: true, // don't allow custom value typing in dropdown
queryMode: 'local'