为什么我的ExtJS下拉框无法动态填充?

1 投票
2 回答
1967 浏览
提问于 2025-04-15 17:20

这是我的 Extjs 的 onReady 函数

var store = new Ext.data.Store({
                                  proxy: new Ext.data.HttpProxy({
                                  url: '/loginjson.json'
                                  }),

                                  reader: new Ext.data.JsonReader(
                                  {root: 'row', fields:['dblist']}
                                    )
                    });
            store.load();

在我的 FormPanel 中,我是这样使用它的

renderTo: document.getElementById("loginform"),
                                    title: "Login Form",
                                    items: [{
                                        xtype: 'combo',
                                        fieldLabel: 'genre',
                                        name: 'genre',
                                        store: store,
                                        autoLoad: true,
                                        displayField: 'dblist',
                                    }

而 Django 返回的 JSON URL 是这样的

http://localhost:8000/loginjson.json

{"row": [{"dblist": "datalist"}]}

但是我的下拉框没有填充数据,我觉得在 extJS 的某个地方出了问题,但我找不到。

2 个回答

0

我觉得你用的JSON读取器的字段属性配置得不太对。你可以试试这样做:

reader: new Ext.data.JsonReader({
            root: 'row'
        ,   fields:[{name: "dblist"}]
        })
4

如果你希望下拉框(ComboBox)的表现更像HTML中的选择框(select),那么你需要在下拉框的配置中添加一个属性:

triggerAction: 'all'

这样,当你点击下拉框的触发按钮时,所有的选项都会显示出来。

另外,下拉框的配置还需要一个叫做valueField的属性:

valueField: 'dblist'

而且,你不需要手动调用数据存储的加载方法。下拉框会在合适的时候自动处理这个事情。

撰写回答