iteye_2005 2010-06-06 20:23
浏览 236
已采纳

extjs3.1版本grid不能用回车导航,老版本可以,请那位好心人帮忙解决

下面的代码在ext3.0中可以,可是到了3.1,总是报ed为Null的错误。但是tab键却可以。

Ext.override(Ext.grid.RowSelectionModel, {

onEditorKey : function(field,e) {

// alert('go');

var k = e.getKey(), newCell, g = this.grid, ed = g.activeEditor;

var shift = e.shiftKey;
//判断校验如果没有通过,不能走动。焦点停在原地,

                //Ext.log('k:' + k);   
                if (k == e.ENTER) {
                    //alert("回车后,单元格焦点位置事件1");
                    //alert(grid.activeEditor.field.isValid(true));
                    e.stopEvent();   
                    ed.completeEdit();   
                    if (shift) {   
                        newCell = g.walkCells(ed.row, ed.col - 1, -1,   
                                this.acceptsNav, this);   
                    } else {   
                        // alert('go');  
                        //alert("回车后,单元格焦点位置事件2");
                        newCell = g.walkCells(ed.row, ed.col + 1, 1,   
                                this.acceptsNav, this);   
                    }   
                } else if (k == e.TAB) {   
                    e.stopEvent();   
                    ed.completeEdit();   
                    if (this.moveEditorOnEnter !== false) {   
                        if (shift) {   
                            newCell = g.walkCells(ed.row - 1, ed.col, -1,   
                                    this.acceptsNav, this);   
                        } else {   
                            // alert('go');   
                            newCell = g.walkCells(ed.row + 1, ed.col, 1,   
                                    this.acceptsNav, this);   
                        }   
                    }   
                } else if (k == e.ESC) {   
                    ed.cancelEdit();   
                }   
                if (newCell) {   
                    g.startEditing(newCell[0], newCell[1]);  //newCell是一个数组,包含了rowIndex,colIndex 
                }   
            }   
        });
  • 写回答

1条回答 默认 最新

  • chem_zqm 2010-06-06 20:38
    关注

    方法重写啊,这个你得去看RowSelectionModel的源码了,我估计是你这里的enter事件之前editor就被销毁了。下面是3.2的那一段代码:
    [code="js"]
    else if(k == e.ENTER){
    if(this.moveEditorOnEnter !== false){
    if(shift){
    newCell = g.walkCells(last.row - 1, last.col, -1, this.acceptsNav, this);
    }else{
    newCell = g.walkCells(last.row + 1, last.col, 1, this.acceptsNav, this);
    }
    }
    }
    [/code]
    里面根本就没有使用对Editor的引用

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装
  • ¥40 复杂的限制性的商函数处理