extjs 网格面板任意行中的文件字段

Posted

技术标签:

【中文标题】extjs 网格面板任意行中的文件字段【英文标题】:File field in any row of extjs grid panel 【发布时间】:2015-02-17 07:55:02 【问题描述】:

我想创建一个网格面板,并为用户添加的任何行插入一个文件,换句话说,任何行中的一列都是一个文件字段。

Id如何做到这一点?

更新:

Ext.define('FM.view.map.DefineCode', 
    extend: 'Ext.window.Window',
    title: 'Define Code',
    alias: 'widget.mmDefineCode',
    width: 600,
    modal: true,
    items: [
        xtype: 'form',
        items: [
            xtype: 'gridpanel',
            title: 'myGrid',
            store: 'DefineCode',
            columns: [
                
                    text: 'Id',
                    xtype: 'rownumberer',
                    width: 20 
                , 
                    text: 'Name',
                    dataIndex: 'name',
                    flex: 1, 
                    editor:
                        xtype: 'textfield'
                    
                , 
                    text: 'File', 
                    dataIndex: 'filename', 
                    width: 200,
                    editor:
                        xtype: 'filefield',
                        emptyText: 'Select your Icon',
                        name: 'photo-path',
                        buttonText: '',
                        flex: 1,
                        buttonConfig: 
                            iconCls: 'icon-upload-18x18'
                        ,
                        listeners: 
                            change: function(e, ee, eee) 

                                var grid = this.up('grid');
                                var store = grid.getStore();
                                var newStore = Ext.create('FM.store.Path',);
                                store.insert(store.data.items.length, newStore);
                            
                        
                    ,
                ,  
                    text: '', 
                    width: 40 
                
            ],
            height: 200,
            width: 600,
            plugins: [
                Ext.create('Ext.grid.plugin.CellEditing', 
                    clicksToEdit: 1
                )
            ]
        ],
    ],
    buttons: [text: 'OK', action: 'OK'],
    initComponent: function() 
        var me = this;


        Ext.apply(me, );
        me.callParent(arguments);
    
);

我想在任何行中选择一个图标,然后将任何行(带有名称和文件名变量)发送到服务器。这是怎么做到的?

【问题讨论】:

【参考方案1】:

尝试使用 defaultType 来做到这一点,如下所示:

defaultType: 'filefield',
    items: [
        fieldLabel: 'Document 1',
        name: 'first',
        allowBlank: false
    , 
        fieldLabel: 'Document 2',
        name: 'second',
        allowBlank: false
    ],

查看this 演示,我已为您创建。 我正在使用 CellEditing 编辑您单击的单元格,在单元格名称中测试单击。

【讨论】:

感谢您的回复,现在我如何将行发送到服务器(文件和其他变量)? 您可以使用 PUT 方法到您的 ajax 来发送文件,对于变量您可以使用 POST。这取决于您,请参阅thisdocumentation。 但只有最后一行的值发送到服务器,我更新了我的问题。 抱歉,您可以为此创建一个不同的问题。我很乐意为您解答。

以上是关于extjs 网格面板任意行中的文件字段的主要内容,如果未能解决你的问题,请参考以下文章

EXTJS 网格分组扩展行中的奇怪行为 - 缺少 CSS?

ExtJS:向网格中添加的列插入值

ExtJs - 通过单击行中的相应图像来编辑网格单元格

如何将面板添加到 rowBody 中的 extjs 网格面板

网格面板中的 ExtJs 5.1 分页工具栏

单击一行后,Extjs 4 网格自定义添加一个带有文本字段的面板