【问题标题】:Force the store to load only those values which are not selected inside Multiselect combo selection-EXTJS强制商店仅加载未在 Multiselect 组合选择-EXTJS 中选择的值
【发布时间】:2018-09-21 01:06:35
【问题描述】:

我使用的是 EXTJs 3.4,我在加载多组合值时遇到问题,在编辑页面上我想检查在多选中选择了哪些值,而不是在下拉选项中加载这些值。

如下所示,“SouthIndia”选项是在创建项目时预加载/保存的,因此现在我希望它不应该出现在 dd 中,因为它已经被选中。

有没有办法让我知道要填充哪些值的存储?

multiselect = new Qx.form.MultiSelectComboBox({
        allowCommaInQuery: true,
        anchor: '0',
        name: "multiselect",
        displayField: 'value',
        valueField: 'value',
        hideRefreshLabel: true,
        refreshable: false,
        mode: 'local',
        emptyText: $L('Select'),
        enableCopyPaste: false,
        anyMatch: true,
        caseSensitive: false,
        width: 170,
        cacheSizes: false,
        hidden: true,
        disabled: true,
        allowBlank: false,
        store: multiComboVpc = new Ext.data.ArrayStore({
            fields: ['value'],
            data: values,
            expandData: true
        })

    }),

    Ext.extend($cls, Panel, {
        afterRender: function() {
            this.multiComboVpc.setValue("SouthIndia") //values coming from server
        }
    });
var values = ["SouthIndia"]

现在在这种情况下,我的下拉菜单应该是空的,我该如何实现呢?

【问题讨论】:

    标签: extjs extjs3


    【解决方案1】:

    步骤

    1. 从组合中获取选定的值

    2. 遍历选定的值并使用 store.find as

    var idx = store.find(fieldName, value, [startIndex], [anyMatch], [caseSensitive]);

    其中 idx 是存储中第一个匹配记录的索引

    1. 使用上述索引获取记录

      var removeRecord = store.getAt(idx);

    2. 现在从存储中删除匹配的记录

    store.remove(removeRecord);

    【讨论】:

      猜你喜欢
      • 2012-12-21
      • 2011-08-13
      • 2018-11-24
      • 2011-01-02
      • 2020-09-19
      • 2012-06-15
      • 2019-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多