ExtJs组合框刷新选定(原始)值

4xrmg8kj  于 2022-11-04  发布在  其他
关注(0)|答案(2)|浏览(185)

我有一个包含商店项目({ value,text})的组合框,有时我需要更新文本。当我这样做时,所选的值(文本)没有更新。
这是一个小提琴,代码如下所示。我们在下拉列表中选择一个项目,然后单击“更新文本”。这将更新下拉列表中的文本,但不会更新组合框的原始值。
[更新]:已将model.set()替换为store.loadData()

Ext.application({
    name : 'Fiddle',

    launch : function() {
        Ext.create("Ext.form.Panel", {
            renderTo: Ext.getBody(),
            width: 300,
            height: 200,
            bodyPadding: 20,
            layout: "form",

            items: [
                {
                    xtype: "combobox",
                    itemId: "pickmin",
                    fieldLabel: "Test",
                    queryMode: "local",
                    store: {
                        fields: ["value", "text"],
                        data: [
                            { value: 1, text: "Text 1" },
                            { value: 2, text: "Text 2" },
                            { value: 3, text: "Text 3" },
                            { value: 4, text: "Text 4" },
                        ]
                    }
                }
            ],

            buttons: [
                {
                    text: "Update Text",
                    handler: function (btn) {
                        const combo = btn.up("form").down("#pickmin");
                        const newData = []
                        combo.store.each(r => {
                            newData.push({
                                value: r.data.value,
                                text: r.data.text + "0"
                            });
                        });
                        combo.store.loadData(newData);
                    }
                }
            ]
        });
    }
});
sdnqo3pr

sdnqo3pr1#

您必须使用

r.set("text", r.data.text + "0");

以更改每个记录中的值。您的按钮代码必须是:

buttons: [{
            text: "Update Text",
            handler: function (btn) {
                const combo = btn.up("form").down("#pickmin");
                combo.store.each(r => {
                    r.set("text", r.data.text + "0"); 
                });
            }
          }]

更新

你可以用下面的代码来解决这个问题:

combo.getStore().on("load",
    function (store, records, successful, operation, eOpts) {
       combo.setValue(combo.getValue());
    },
    this
)

我已经写了一个 Sencha 小提琴为您展示解决方案:https://fiddle.sencha.com/#view/editor&fiddle/3cf6
如果有帮助的话我很高兴!请考虑接受最好的答案。

ufj5ltwl

ufj5ltwl2#

您忘记设置组合框的valueField和displayField属性。组合框属性应如下所示

xtype: "combobox",
 itemId: "pickmin",
 valueField:"value",
 displayField :"text"

现在可以从组合框中获取rawValue

相关问题