当使用存储远程筛选器加载数据时,如何在客户端筛选组合框

How filter combo box on client side when data is loaded using store remote filter

本文关键字:筛选 数据 组合 客户端 加载 存储 程筛选      更新时间:2023-09-26

我有两个组合框。在第一个连击中,控制器中有一个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设置remoteFilter为false,但没有数据显示在组合内。

编辑:如果我设置了store load事件:

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

仅在store第一次加载时才工作。当它再次加载时,当我开始输入时,combo中的值不会被过滤。

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

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

在第二个组合中使用这两个属性。

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