0

我有一个处理程序:onCalendarEditFunc 用于编辑网格中选定的单元格。现在我有这个:

onCalendarEditFunc: function() {
        var selection = this.getView().getSelectionModel().getSelection();
        requires : [
            'Ext.grid.plugin.CellEditing',
            'Ext.grid.column.Column'
        ]



        edit = this.editing;
        console.log(this.getView().getSelectionModel().getSelection());
        edit.cancelEdit();
    //  this.store.insert(0, rec);
        edit.startEditByPosition({
            row: this.store.indexOf(selection[0]),
            column: 0
        });

    },

whererow: this.store.indexOf(selection[0]),工作正常,就像我可以编辑所选行中的第一个单元格。但是我的行有多个列,所以我想给出column:一个值,它是所选单元格的值。

谢谢

勒龙

4

2 回答 2

2

为了检测用户选择的确切单元格(如果您想编辑按钮功能,使所选单元格像我的情况一样可编辑),您可以执行以下操作。这是 initComponent 函数的开始

initComponent: function(){

        this.editing = Ext.create('Ext.grid.plugin.CellEditing');
        Ext.apply(this, {
            title: 'Календар',
            frame: false,
            plugins : [this.editing],
            store: 'CalendarEvents',
            selModel: {
                selType: 'cellmodel'
            },

这里的重要部分是

selModel: {
          selType: 'cellmodel'
          },

然后允许您在编辑功能中使用以下语法:

editfunction: function() {
    var selection = this.view.getSelectionModel().getCurrentPosition();
    requires : [
        'Ext.grid.plugin.CellEditing',
        'Ext.grid.column.Column',
        'Ext.selection.CellModel'
    ]



    edit = this.editing;
    //console.log(this.view.getSelectionModel().getCurrentPosition().column);

    edit.cancelEdit();
//  this.store.insert(0, rec);
    edit.startEditByPosition({
        row: selection.row,
        column: selection.column
    });

},

就是这样,现在您获取所选单元格的位置并传递它,以便您可以从那里开始编辑或在函数中开始编辑:

edit.startEditByPosition({
            row: selection.row,
            column: selection.column
        });
于 2012-04-12T05:33:57.093 回答
1

尝试这样的事情:

edit.cancelEdit();
edit.startEdit(selection[0] /* this basically your record */, column /* 3 for example */);
于 2012-04-11T17:34:20.230 回答