如何在 Extjs 的组合框中传递 treestore
How to pass treestore in combobox in Extjs
我有一个组合框,它需要一个树店作为它的商店。
我试过下面的代码,但它不起作用。
Ext.define('DemoGroupCombo', {
extend: 'Ext.data.TreeStore',
fields: ['text', 'value'],
proxy: {
type: 'rest',
url: '../SamplePaging/GetComboTree',
//data: groupStoreData,
reader: {
type: 'json',
rootProperty: 'children'
}
}
});
预期 json 来自 api 的结果:
var groupStoreData =
//new Ext.data.TreeStore({
// root:
{
expanded: true, children: [
{
//checked: false, text: "All", expanded: true, children: [
// {
checked: false, text: "Numbers", expanded: true, children: [
{ checked: false, text: '1', value: '1', leaf: true },
{ checked: true, text: '2', value: '2', leaf: true },
{ checked: false, text: '3', value: '3', leaf: true },
{
checked: false, text: '4', value:'4', leaf: true
}
]
}
]
//}]
}
组合框:
{
xtype: 'combobox',
selModel: {
selType: 'checkboxmodel'
},
queryMode: 'local',
displayField: 'text',
valueField: 'value',
store: { type: 'DemoGroupCombo' }
}
现在我在显示屏上收到此错误消息:
Error: [Ext.createByAlias] Unrecognized alias: store.DemoGroupCombo
您需要为商店指定别名:
Ext.define('DemoGroupCombo', {
extend: 'Ext.data.TreeStore',
alias: 'store.DemoGroupCombo',
fields: ['text', 'value'],
proxy: {
type: 'rest',
url: '../SamplePaging/GetComboTree',
//data: groupStoreData,
reader: {
type: 'json',
rootProperty: 'children'
}
}
});
我找到了解决方案,这是执行 ajax 代理调用的方法。
Ext.define('DemoGroupCombo', {
extend: 'Ext.data.TreeStore',
alias: 'store.DemoGroupCombo',
autoLoad: true,
proxy: {
type: 'ajax',
useDefaultXhrHeader: false,
actionMethods: { create: "POST", read: "POST", update: "POST", destroy: "POST" },
headers: {
'accept': '*/*'
},
async: false,
limitParam: false,
startParam: false,
pageParam: false,
url: '../SamplePaging/GetComboTree',
reader: {
rootProperty: "children",
type: 'json'
}
},
defaultRootProperty: "children",
root: {
expanded: true
}
});
我有一个组合框,它需要一个树店作为它的商店。 我试过下面的代码,但它不起作用。
Ext.define('DemoGroupCombo', {
extend: 'Ext.data.TreeStore',
fields: ['text', 'value'],
proxy: {
type: 'rest',
url: '../SamplePaging/GetComboTree',
//data: groupStoreData,
reader: {
type: 'json',
rootProperty: 'children'
}
}
});
预期 json 来自 api 的结果:
var groupStoreData =
//new Ext.data.TreeStore({
// root:
{
expanded: true, children: [
{
//checked: false, text: "All", expanded: true, children: [
// {
checked: false, text: "Numbers", expanded: true, children: [
{ checked: false, text: '1', value: '1', leaf: true },
{ checked: true, text: '2', value: '2', leaf: true },
{ checked: false, text: '3', value: '3', leaf: true },
{
checked: false, text: '4', value:'4', leaf: true
}
]
}
]
//}]
}
组合框:
{
xtype: 'combobox',
selModel: {
selType: 'checkboxmodel'
},
queryMode: 'local',
displayField: 'text',
valueField: 'value',
store: { type: 'DemoGroupCombo' }
}
现在我在显示屏上收到此错误消息:
Error: [Ext.createByAlias] Unrecognized alias: store.DemoGroupCombo
您需要为商店指定别名:
Ext.define('DemoGroupCombo', {
extend: 'Ext.data.TreeStore',
alias: 'store.DemoGroupCombo',
fields: ['text', 'value'],
proxy: {
type: 'rest',
url: '../SamplePaging/GetComboTree',
//data: groupStoreData,
reader: {
type: 'json',
rootProperty: 'children'
}
}
});
我找到了解决方案,这是执行 ajax 代理调用的方法。
Ext.define('DemoGroupCombo', {
extend: 'Ext.data.TreeStore',
alias: 'store.DemoGroupCombo',
autoLoad: true,
proxy: {
type: 'ajax',
useDefaultXhrHeader: false,
actionMethods: { create: "POST", read: "POST", update: "POST", destroy: "POST" },
headers: {
'accept': '*/*'
},
async: false,
limitParam: false,
startParam: false,
pageParam: false,
url: '../SamplePaging/GetComboTree',
reader: {
rootProperty: "children",
type: 'json'
}
},
defaultRootProperty: "children",
root: {
expanded: true
}
});