EasyUI編集セル拡張メソッドショートカットがトリガーされ、上下キーで行を選択します.セルをクリックして編集を開始し、キーボードの上下キーtabキーshiftで編集したセルを切り替えます


この拡張方法は、公式サイトで提供されている表編集セルの機能をさらに拡張し、キーボードショートカットの操作を加えます.
  • 編集を開始していない場合は、キーボードの上下キーを押すことで選択した行
  • を切り替えることができます.
  • セルをクリックしてセルの編集を開始し、キーボード↑キーを押すと、編集可能なセルは現在のセルの上のセルになり、キーボード↓キーを押すと、編集可能なセルは現在のセルの下のセルになり、キーボードTabキーを押すと、編集可能なセルは現在のセルの右側のセルになり、キーボードShiftキーを押すと、編集可能なセルが現在のセルの右側のセルになるキーボードEnterキーを押して編集を終了し、上下キー選択列を再出発する機能
  • .
    
    
    
    
        
        
        
        Document
        
        
        
        
        
        
        
        //          data 
            var data = [
                {
                    productid: "FI-SW-01",
                    productname: "Koi",
                    unitcost: "10",
                    status: "P",
                    listprice: "36.5",
                    attr1: "Large",
                    itemid: "EST-1"
                },
                {
                    productid: "FI-SW-01",
                    productname: "Koi",
                    unitcost: "10",
                    status: "P",
                    listprice: "36.5",
                    attr1: "Large",
                    itemid: "EST-1"
                },
                {
                    productid: "FI-SW-01",
                    productname: "Koi",
                    unitcost: "10",
                    status: "P",
                    listprice: "36.5",
                    attr1: "Large",
                    itemid: "EST-1"
                },]
            $.extend($.fn.datagrid.methods, {
            //                       ,           [http://www.jeasyui.net/extension/202.html][1]
                editCell: function (jq, param) {
                    return jq.each(function () {
                        var opts = $(this).datagrid('options');
                        var fields = $(this).datagrid('getColumnFields', true).concat($(this).datagrid('getColumnFields'));//      ,     
                        for (var i = 0; i < fields.length; i++) {
                            var col = $(this).datagrid('getColumnOption', fields[i]);
                            col.editor1 = col.editor;
                            if (fields[i] != param.field) {
                                col.editor = null;
                            }
                        }
                        $(this).datagrid('beginEdit', param.index);
                        for (var i = 0; i < fields.length; i++) {
                            var col = $(this).datagrid('getColumnOption', fields[i]);
                            col.editor = col.editor1;
                        }
                    });
    
                },
                //             
                keyCtrLine:function(jq){
                    var elem=jq.selector//    datagrid id
                    var dg = $("#"+elem.replace("#",''));
                    $(document).unbind("keydown");//                    
                    //               ,     ,        
                    $(document).bind('keydown', function (e) {
                        if(editIndex==undefined){
                            switch (e.keyCode) {
                                case 38: // up
                                    var selected = dg.datagrid('getSelected');
                                    if (selected) {
                                        var index = dg.datagrid('getRowIndex', selected);
                                        //             0,   0     
                                        if(index != 0){
                                            dg.datagrid('selectRow', index - 1);
                                        }
                                    } else {
                                        var rows = dg.datagrid('getRows');
                                        dg.datagrid('selectRow', rows.length - 1);
                                    }
                                    break;
                                case 40: // down
                                    var selected = dg.datagrid('getSelected');
                                    if (selected) {
                                        var index = dg.datagrid('getRowIndex', selected);
                                        var rows = dg.datagrid('getRows');
                                        if(index < (rows.length-1)){
                                            dg.datagrid('selectRow', index + 1);
                                        }else {
                                        dg.datagrid('selectRow', 0);
                                        }
                                    }else {
                                        var rows = dg.datagrid('getRows');
                                        dg.datagrid('selectRow',0);
                                        
                                    }
                                break;
                            }
                        }
                    });
                },
                //                  
               keyCtrCell: function (jq) {
                    var elem=jq.selector
                    var dg = $("#"+elem.replace("#",''));
                    var allFields = dg.datagrid('getColumnFields');    
                    $(document).unbind("keydown");
                    $(document).bind('keydown', function (e) {
                        console.log(e.keyCode)
                        if(editIndex!=undefined){
                            switch (e.keyCode) {
                            case 38: // up ↑    
                                //                 
                                if(editIndex != 0){
                                    dg.datagrid('endEdit', editIndex);
                                    //onClickCell(editIndex-1,editField)
                                    dg.datagrid('editCell', { index: editIndex-1, field: editField });
                                    editIndex = editIndex-1;
                                    editField = editField;
                                }
                            break;
                            case 40: // down ↓    
                            var rows = dg.datagrid('getRows');
                                //                   
                                if(editIndex < (rows.length-1)){
                                    dg.datagrid('endEdit', editIndex);
                                    //onClickCell(editIndex+1,editField)
                                    dg.datagrid('editCell', { index: editIndex+1, field: editField });
                                    editIndex = editIndex+1;
                                    editField = editField;
                                }
                            break;
                            case 16://left shift    
                                //                 
                                if(editField!=allFields[0]){
                                    var i=allFields.indexOf(editField);
                                    dg.datagrid('endEdit', editIndex);
                                    dg.datagrid('editCell', { index: editIndex, field: allFields[i-1] });
                                    editIndex = editIndex;
                                    editField = allFields[i-1];
                                   // onClickCell(editIndex,allFields[i-1]);
                                }
                            break;
                            case 9://right tab    
                            //                 
                                if(editField!=allFields[allFields.length-1]){
                                    var i=allFields.indexOf(editField);
                                    dg.datagrid('endEdit', editIndex);
                                    dg.datagrid('editCell', { index: editIndex, field: allFields[i+1] });
                                    editIndex = editIndex;
                                    editField = allFields[i+1];
                                    //onClickCell(editIndex,allFields[i+1]);
                                }
                            break;
                            case 13://enter       
                            //                        
                                dg.datagrid('endEdit', editIndex);
                                editIndex = undefined;
                                editField = undefined;
                                dg.datagrid("keyCtrLine")
                            break;
                            }
                        }
                    });
                }
            });
            //      ,            ID:keyCodeListionDG;     :editIndex;  :editField;
            var editIndex = undefined;
            var editField = undefined;
            var keyCodeListionDG=undefined;
            function endEditing(obj) {
                if (editIndex == undefined) { return true }
                //validateRow       ,      true。
                if (obj.datagrid('validateRow', editIndex)) {
                    obj.datagrid('endEdit', editIndex);
                    editIndex = undefined;
                    editField = undefined;
                    return true;
                } else {
                    return false;
                }
            }
            function onClickCell(index, field) {
                var dg = $(this);
                if (endEditing(dg)) {
                    dg.datagrid('selectRow', index).datagrid('editCell', { index: index, field: field });
                    editIndex = index;
                    editField = field;
                    keyCodeListionDG=this.id
                    $("#"+keyCodeListionDG).datagrid("keyCtrCell")
                }
            }
            $(function () {
                $("#dg").datagrid({
                    data: data,
                    frozenColumns: [[
                        { field: "ck", checkbox: true },
                    ]],
                    iconCls: 'icon-edit',
                    singleSelect: true,
                    onClickCell: onClickCell,
                    onLoadSuccess:function(){
                    //                       ,           
                        $("dg").datagrid("keyCtrLine")
                    }
                })
                $("#dg1").datagrid({
                    data: data,
                    frozenColumns: [[
                        { field: "ck", checkbox: true },
                    ]],
                    iconCls: 'icon-edit',
                    singleSelect: true,
                    onClickCell: onClickCell,
                    onLoadSuccess:function(){
                        //$("dg1").datagrid("keyCtrLine")
                    }
                })
            })
        
    
    
    
        
    Item ID Product List Price Unit Cost Attribute Status
    Item ID Product List Price Unit Cost Attribute Status