ExtJS从一行中选择某个单元格

时间:2012-04-11 15:45:50

标签: dom extjs extjs4

我有一个处理程序: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
        });

    },

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

谢谢

Leron

2 个答案:

答案 0 :(得分: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
        });

答案 1 :(得分:1)

尝试这样的事情:

edit.cancelEdit();
edit.startEdit(selection[0] /* this basically your record */, column /* 3 for example */);