Dom ExtJS从行中选择特定单元格

Dom ExtJS从行中选择特定单元格,dom,extjs,extjs4,Dom,Extjs,Extjs4,我有一个处理程序:onCalendarEditFunc,用于编辑网格中选定的单元格。现在我有这个: onCalendarEditFunc: function() { var selection = this.getView().getSelectionModel().getSelection(); requires : [ 'Ext.grid.plugin.CellEditing', 'Ext.grid.column

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

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

谢谢


Leron

试试这样:

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

试着这样做:

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

为了检测用户选择的确切单元格(如果您想编辑按钮功能,使所选单元格像我的情况一样可编辑),您可以这样做。这是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
        });
就是这样,现在您可以得到所选单元格的位置并传递它,这样您就可以从那里开始编辑,或者在函数中进行编辑:

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
        });

为了检测用户选择的确切单元格(如果您想编辑按钮功能,使所选单元格像我的情况一样可编辑),您可以这样做。这是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
        });
就是这样,现在您可以得到所选单元格的位置并传递它,这样您就可以从那里开始编辑,或者在函数中进行编辑:

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
        });

您知道要启动编辑器的列索引吗?不知道,我的想法是,我有一个包含-5列的网格,在这个网格中,我基于SQL查询生成行。我这样说只是为了知道行数不是静态的。因此,当用户想要更改第3列第15行的某些信息时,他只需单击单元格,但是函数startEditByPosition有两个选项,第一个选项-我想动态获取的行我想截取用户为编辑选择的列。你知道你想启动编辑器的列索引吗?不,我的想法是我有一个包含-5列的网格,在这个网格中我基于SQL查询生成行。我这样说只是为了知道行数不是静态的。因此,当用户想要更改第3列第15行的某些信息时,他只需单击单元格,但函数startEditByPosition有两个选项,第一个选项-我通过动态方式获取的行,我想截取用户为编辑选择的列。是的,但它必须是一个变量,其值必须是行中选定列的值,而不是硬编码“3”。无论如何,我找到了一个可行的解决方案,所以我要把它贴在这里。我把变量放在那里-你可以计算它。是的,但它必须是一个变量,它的值必须是行中选定的列。不管怎样,我找到了一个可行的解决方案,所以我要把它贴在这里。我把变量放在那里,你们可以计算出来。