EasyUI Forum
June 26, 2024, 08:04:22 AM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News:
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: can't copy the text from the datagrid cell when extend cell edit.  (Read 4921 times)
frankgao
Jr. Member
**
Posts: 53


View Profile Email
« on: March 05, 2016, 02:43:58 AM »

I saw the datagrid extension method from the web.
I used this extension method,
If datagrid has two cell,when I select all the MatCode cell text and loose the mouse left key,
the select text turn unselect,so I I can't copy the cell text.
May be this extension function disturbed,
when I click the Quantity cell first, and copy the MatCode cell text,it's perfectly normal.
I don't know how can I fix this problem.
If you don't understand my description I will do better description.
Thanks.

Code:
{ field: 'ma_code', title: 'MatCode', width: '110px', sortable: true },
{
                    field: 'qty', title: 'Quantity', width: '100px', editor: {
                        type: 'text', options: {
                            required: true
                        }
                    }
                }


Code:
    (function ($) {
        function nav(target) {
            var dg = $(target);
            var opts = dg.datagrid('options');
            dg.datagrid('getPanel').attr('tabindex', 1).css('outline-style', 'none').unbind('.cellediting').bind('keydown.cellediting', function (e) {
                switch (e.keyCode) {
                    case 37:  // left
                        gotoCell(target, 'left');
                        break;
                    case 39:  // right
                        gotoCell(target, 'right');
                        break;
                    case 38:  // up
                        gotoCell(target, 'up');
                        break;
                    case 40:  // down
                        gotoCell(target, 'down');
                        break;
                    case 13:  // enter
                        var cell = $(this).find('td.datagrid-row-selected');
                        if (cell.length) {
                            var field = cell.attr('field');
                            var index = cell.closest('tr.datagrid-row').attr('datagrid-row-index');
                            dg.datagrid('editCell', {
                                index: index,
                                field: field
                            });
                        }
                        break;
                }
                return false;
            });
        }

        function gotoCell(target, p) {
            var dg = $(target);
            var opts = dg.datagrid('options');
            var cell = dg.datagrid('getPanel').find('td.datagrid-row-selected');
            if (typeof p == 'object') {
                cell.removeClass('datagrid-row-selected');
                cell = opts.finder.getTr(target, p.index).find('td[field="' + p.field + '"]');
                cell.addClass('datagrid-row-selected');
                return;
            }
            if (!cell) { return; }
            var field = cell.attr('field');
            var tr = cell.closest('tr.datagrid-row');
            var index = parseInt(tr.attr('datagrid-row-index'));
            var td = cell;
            if (p == 'up' && index > 0) {
                td = opts.finder.getTr(dg[0], index - 1).find('td[field="' + field + '"]');
            } else if (p == 'down' && index < dg.datagrid('getRows').length - 1) {
                td = opts.finder.getTr(dg[0], index + 1).find('td[field="' + field + '"]');
            } else if (p == 'left') {
                td = td.prev();
            } else if (p == 'right') {
                td = td.next();
            }
            if (td.length) {
                dg.datagrid('scrollTo', td.closest('tr.datagrid-row').attr('datagrid-row-index'));
                cell.removeClass('datagrid-row-selected');
                td.addClass('datagrid-row-selected');
            }
        }

        function editCell(target, param) {
            var dg = $(target);
            var opts = dg.datagrid('options');
            var fields = dg.datagrid('getColumnFields', true).concat(dg.datagrid('getColumnFields'));
            $.map(fields, function (field) {
                var col = dg.datagrid('getColumnOption', field);
                col.editor1 = col.editor;
                if (field != param.field) {
                    col.editor = null;
                }
            });
            dg.datagrid('endEdit', param.index);
            dg.datagrid('beginEdit', param.index);
            opts.editIndex = param.index;
            var ed = dg.datagrid('getEditor', param);
            if (ed) {
                var t = $(ed.target);
                if (t.hasClass('textbox-f')) {
                    t = t.textbox('textbox');
                }
                t.focus();
                t.bind('keydown', function (e) {
                    if (e.keyCode == 13) {
                        dg.datagrid('endEdit', param.index);
                        gotoCell(target, param);
                        dg.datagrid('getPanel').focus();
                    } else if (e.keyCode == 27) {
                        dg.datagrid('cancelEdit', param.index);
                        gotoCell(target, param);
                        dg.datagrid('getPanel').focus();
                    }
                    e.stopPropagation();
                });
            }
            $.map(fields, function (field) {
                var col = dg.datagrid('getColumnOption', field);
                col.editor = col.editor1;
            });
        }

        function enableCellEditing(target) {
            var dg = $(target);
            var opts = dg.datagrid('options');
            opts.oldOnClickCell = opts.onClickCell;
            opts.onClickCell = function (index, field) {
                if (opts.editIndex != undefined) {
                    if (dg.datagrid('validateRow', opts.editIndex)) {
                        dg.datagrid('endEdit', opts.editIndex);
                        opts.editIndex = undefined;
                    } else {
                        return;
                    }
                }
                dg.datagrid('selectRow', index).datagrid('editCell', {
                    index: index,
                    field: field
                }).datagrid('gotoCell', {
                    index: index,
                    field: field
                });
                opts.oldOnClickCell.call(this, index, field);
            };
            opts.onBeforeSelect = function () {
                //return false;
            };
        }

        $.extend($.fn.datagrid.methods, {
            editCell: function (jq, param) {
                return jq.each(function () {
                    editCell(this, param);
                });
            },
            gotoCell: function (jq, param) {
                return jq.each(function () {
                    gotoCell(this, param);
                });
            },
            enableCellEditing: function (jq) {
                return jq.each(function () {
                    nav(this);
                    enableCellEditing(this);
                });
            }
        });

    })(jQuery);
Logged
jarry
Administrator
Hero Member
*****
Posts: 2267


View Profile Email
« Reply #1 on: March 05, 2016, 09:20:15 AM »

Please try to download the 'datagrid-cellediting.js' file from http://www.jeasyui.com/extension/datagrid_cellediting.php
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!