【问题标题】:extjs 6 combobox reload displayed valueextjs 6 组合框重新加载显示值
【发布时间】:2020-01-13 14:36:55
【问题描述】:

当在 setValue() 之后加载 store 时,我们最终会显示 valueField。加载商店并单击下拉菜单后,将突出显示正确的项目;但输入字段本身不会使用 displayField 值更新。

我们如何刷新组合框的输入元素以反映选中项显示字段?

【问题讨论】:

    标签: extjs


    【解决方案1】:

    将您的setValue() 放入商店加载的回调函数中。假设combo 是组合框,你的代码应该是这样的。

    combo.store.load({
        callback: function (rec) {
           combo.setValue(value);
        }
    });
    

    【讨论】:

    • 差不多。就我而言,我不控制商店的加载,因此即使我可以附加加载的事件处理程序,我也不会在该处理程序中拥有 value。相反,有这个私有函数 updateValue() 会更新显示的值而不更新基础值
    【解决方案2】:

    我建议在使用 setValue() 之前使用 clearValue() 选项。这将删除组合框之前的基础值。但是,如果您正在设置组合框的值,存储尚未加载,并且它是一个远程组合框,我建议您先将记录添加到组合框的存储中,然后将值设置为该记录。再次加载商店后,商店将被清除,但您仍将拥有您的第一个值。

    combobox.getStore().insert(0, {
       id: 1,
       name: 'displayField'
    });
    combobox.setValue(1); //if your valueField is id
    

    上述方法的文档:https://docs.sencha.com/extjs/6.6.0/classic/Ext.form.field.ComboBox.html https://docs.sencha.com/extjs/6.6.0/classic/Ext.data.Store.html

    【讨论】:

    • 这也是一个好方法。我为组合框创建了一个插件,该插件添加了设置值及其显示字段的功能。我在注入前检查加载状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2012-10-08
    相关资源
    最近更新 更多