我正在尝试在GeoExt地图应用上创建CSV文件上传。 我需要将上传功能放在Ext.Action中,以便我可以将它添加到GeoExt Panel的工具栏中。我正在努力实现这个example。这是我的代码,
action = new Ext.Action({
text: "Upload Excel",
control: Ext.create('Ext.form.Panel', {
title: 'Upload a CSV File',
width: 400,
bodyPadding: 10,
frame: true,
renderTo: Ext.getBody(),
items: [{
xtype: 'filefield',
name: 'csv',
fieldLabel: 'CSV Upload',
labelWidth: 50,
msgTarget: 'side',
allowBlank: false,
buttonText: 'Select CSV File'
}],
buttons: [{
text: 'Upload',
handler: function () {
var form = this.up('form')
.getForm();
if (form.isValid()) {
form.submit({
url: 'file-upload.py',
waitMsg: 'Uploading the CSV File...',
success: function (fp, o) {
Ext.Msg.alert('Success', 'Your csv file "' + o.result.file + '" has been uploaded.');
}
});
}
}
}]
}),
map: map,
// button options
tooltip: "Upload CSV File",
// check item options
group: "newTool"
});
actions["upCSV"] = action;
toolbarItems.push(new Ext.button.Button(action));
Firebug一直给我这个错误,
TypeError: b[d.xtype || e] is not a constructor
我是否在Ext.Action中错误地声明了该功能?
答案 0 :(得分:1)
您无法直接将action
推送到toolbar
,因为Ext.Action
不是Ext.Component
的类型。 Ext.Action
基本上是一种创建可以多次重用的抽象层的方法。在这里,您需要执行以下操作:
toolbarItems.push(new Ext.button.Button(action));
操作允许您共享处理程序,配置选项和UI更新 跨任何支持Action接口的组件(主要是 Ext.toolbar.Toolbar,Ext.button.Button和Ext.menu.Menu组件)