Javascript 如何在表单提交时包含添加到网格的文件

Javascript 如何在表单提交时包含添加到网格的文件,javascript,extjs,Javascript,Extjs,我有一个带有字段和网格的表单 { textfield }, { textfield }, { textfield }, etc..., { grid with toolbar: filefield } 在网格上,我添加了一个filefield工具栏,我添加了一个更改侦听器,将文件添加到网格中: addAttachment: function (field, value, eOpts) { var me = this, grid = field.up('

我有一个带有字段和网格的表单

{ textfield },
{ textfield },
{ textfield },
 etc...,
{ grid with toolbar: filefield }
在网格上,我添加了一个
filefield
工具栏,我添加了一个更改侦听器,将文件添加到网格中:

addAttachment: function (field, value, eOpts) {
        var me = this,
            grid = field.up('grid'),
            gridStore = grid.getStore();
        gridStore.add(
            {
                filename: value,
                dateadded: new Date()
            });
    }
基本上,我希望首先将附件添加到网格中,以便可以向服务器发送多个文件。这可能吗

当前,执行
form.getValues()
操作只能获取表单中的其他字段,而不能获取工具栏。获取存储项目似乎也不包括正确的文件路径,因为它们的前缀是
c:\fakepath\


我只想在
Save
事件中推送所有表单值,包括存储在网格中的所有文件。各位运气好吗?

好的。因为,没有人回答,以下是我所做的:

首先,我没有在网格的tbar中使用
文件字段
,而是使用
按钮
。我在该按钮中添加了一个单击侦听器,该按钮在表单中添加了一个隐藏的
filefield

addAttachment: function (button) {
    var me = this,
        form = button.up('form'),
        grid = button.up('grid'),
        gridStore = grid.getStore(),
        newFileField = {
            xtype: 'filefield',
            hidden: true,
            unused: true, //custom property to check if there is already an unused field
            listeners: {
                change: function (field, value, eOpts) {
                    gridStore.add(
                    {
                        filename: value,
                        dateadded: new Date()
                    });
                    field.unused = false;
                }
            }
        };

    //if there is already an unused field, we don't need to add a newField to the form
    if (!form.down('filefield[unused=true]')) {
        form.add(newFileField);
    }
    //imitate the filefield trigger. this will show the file dialog
    form.down('filefield[unused=true]').fileInputEl.dom.click();

}
就这样。基本上,
按钮
只是模仿
文件字段
文件对话框触发器,但实际发生的是它向表单添加了一个新的
文件字段
。因此,调用
form.getForm().submit()
现在包括网格中的所有文件

我希望这对将来的任何人都有帮助

干杯