jquery.edatagrid.js下载的包里没有这个(不知道是不是我漏掉了)这边备份

it2022-05-05  123

/**  * edatagrid - jQuery EasyUI  *   * Licensed under the GPL:  *   http://www.gnu.org/licenses/gpl.txt  *  * Copyright 2011-2015 www.jeasyui.com   *   * Dependencies:  *   datagrid  *   messager  *   */ (function ($) {     // var oldLoadDataMethod = $.fn.datagrid.methods.loadData;     // $.fn.datagrid.methods.loadData = function(jq, data){     //     jq.each(function(){     //         $.data(this, 'datagrid').filterSource = null;     //     });     //     return oldLoadDataMethod.call($.fn.datagrid.methods, jq, data);     // };

    var autoGrids = [];     function checkAutoGrid() {         autoGrids = $.grep(autoGrids, function (t) {             return t.length && t.data('edatagrid');         });     }     function saveAutoGrid(omit) {         checkAutoGrid();         $.map(autoGrids, function (t) {             if (t[0] != $(omit)[0]) {                 t.edatagrid('saveRow');             }         });         checkAutoGrid();     }     function addAutoGrid(dg) {         checkAutoGrid();         for (var i = 0; i < autoGrids.length; i++) {             if ($(autoGrids[i])[0] == $(dg)[0]) { return; }         }         autoGrids.push($(dg));     }     function delAutoGrid(dg) {         checkAutoGrid();         autoGrids = $.grep(autoGrids, function (t) {             return $(t)[0] != $(dg)[0];         });     }

    $(function () {         $(document).unbind('.edatagrid').bind('mousedown.edatagrid', function (e) {             var p = $(e.target).closest('div.datagrid-view,div.combo-panel,div.window,div.window-mask');             if (p.length) {                 if (p.hasClass('datagrid-view')) {                     saveAutoGrid(p.children('table'));                 }                 return;             }             saveAutoGrid();         });     });

    function buildGrid(target) {         var opts = $.data(target, 'edatagrid').options;         $(target).datagrid($.extend({}, opts, {             onDblClickCell: function (index, field, value) {                 if (opts.editing) {                     $(this).edatagrid('editRow', index);                     focusEditor(target, field);                 }                 if (opts.onDblClickCell) {                     opts.onDblClickCell.call(target, index, field, value);                 }             },             onClickCell: function (index, field, value) {                 // if (opts.editing && opts.editIndex >= 0){                 //     $(this).edatagrid('editRow', index);                 //     focusEditor(target, field);                 // }                 if (opts.editIndex >= 0) {                     var dg = $(this);                     if (opts.editing) {                         dg.edatagrid('editRow', index);                     } else {                         setTimeout(function () {                             dg.edatagrid('selectRow', opts.editIndex);                         }, 0);                     }                     focusEditor(target, field);                 }                 if (opts.onClickCell) {                     opts.onClickCell.call(target, index, field, value);                 }             },             onBeforeEdit: function (index, row) {                 if (opts.onBeforeEdit) {                     if (opts.onBeforeEdit.call(target, index, row) == false) {                         return false;                     }                 }                 if (opts.autoSave) {                     addAutoGrid(this);                 }                 opts.originalRow = $.extend(true, [], row);             },             onAfterEdit: function (index, row) {                 delAutoGrid(this);                 opts.editIndex = -1;                 var url = row.isNewRecord ? opts.saveUrl : opts.updateUrl;                 if (url) {                     var changed = false;                     var fields = $(this).edatagrid('getColumnFields', true).concat($(this).edatagrid('getColumnFields'));                     for (var i = 0; i < fields.length; i++) {                         var field = fields[i];                         var col = $(this).edatagrid('getColumnOption', field);                         if (col.editor && opts.originalRow[field] != row[field]) {                             changed = true;                             break;                         }                     }                     if (changed) {                         opts.poster.call(target, url, row, function (data) {                             if (data.isError) {                                 var originalRow = opts.originalRow;                                 $(target).edatagrid('cancelRow', index);                                 $(target).edatagrid('selectRow', index);                                 $(target).edatagrid('editRow', index);                                 opts.originalRow = originalRow;                                 opts.onError.call(target, index, data);                                 return;                             }                             data.isNewRecord = null;                             $(target).datagrid('updateRow', {                                 index: index,                                 row: data                             });                             if (opts.tree) {                                 var idValue = row[opts.idField || 'id'];                                 var t = $(opts.tree);                                 var node = t.tree('find', idValue);                                 if (node) {                                     node.text = row[opts.treeTextField];                                     t.tree('update', node);                                 } else {                                     var pnode = t.tree('find', row[opts.treeParentField]);                                     t.tree('append', {                                         parent: (pnode ? pnode.target : null),                                         data: [{ id: idValue, text: row[opts.treeTextField] }]                                     });                                 }                             }                             opts.onSuccess.call(target, index, row);                             opts.onSave.call(target, index, row);                         }, function (data) {                             opts.onError.call(target, index, data);                         });                     } else {                         opts.onSave.call(target, index, row);                     }                 } else {                     row.isNewRecord = false;                     opts.onSave.call(target, index, row);                 }                 if (opts.onAfterEdit) opts.onAfterEdit.call(target, index, row);             },             onCancelEdit: function (index, row) {                 delAutoGrid(this);                 opts.editIndex = -1;                 if (row.isNewRecord) {                     $(this).datagrid('deleteRow', index);                 }                 if (opts.onCancelEdit) opts.onCancelEdit.call(target, index, row);             },             onBeforeLoad: function (param) {                 if (opts.onBeforeLoad.call(target, param) == false) { return false }                 $(this).edatagrid('cancelRow');                 if (opts.tree) {                     var node = $(opts.tree).tree('getSelected');                     param[opts.treeParentField] = node ? node.id : undefined;                 }             }         }));

 

        if (opts.tree) {             $(opts.tree).tree({                 url: opts.treeUrl,                 onClick: function (node) {                     $(target).datagrid('load');                 },                 onDrop: function (dest, source, point) {                     var targetId = $(this).tree('getNode', dest).id;                     var data = {                         id: source.id,                         targetId: targetId,                         point: point                     };                     opts.poster.call(target, opts.treeDndUrl, data, function (result) {                         $(target).datagrid('load');                     });                 }             });         }     }

    function focusEditor(target, field) {         var opts = $(target).edatagrid('options');         var t;         var editor = $(target).datagrid('getEditor', { index: opts.editIndex, field: field });         if (editor) {             t = editor.target;         } else {             var editors = $(target).datagrid('getEditors', opts.editIndex);             if (editors.length) {                 t = editors[0].target;             }         }         if (t) {             var state = $(target).data('datagrid');             var left = state.dc.body2._scrollLeft();             if ($(t).hasClass('textbox-f')) {                 $(t).textbox('textbox').focus();             } else {                 $(t).focus();             }             state.dc.body2._scrollLeft(left);    // restore the scroll left         }     }

    $.fn.edatagrid = function (options, param) {         if (typeof options == 'string') {             var method = $.fn.edatagrid.methods[options];             if (method) {                 return method(this, param);             } else {                 return this.datagrid(options, param);             }         }

        options = options || {};         return this.each(function () {             var state = $.data(this, 'edatagrid');             if (state) {                 $.extend(state.options, options);             } else {                 $.data(this, 'edatagrid', {                     options: $.extend({}, $.fn.edatagrid.defaults, $.fn.edatagrid.parseOptions(this), options)                 });             }             buildGrid(this);         });     };

    $.fn.edatagrid.parseOptions = function (target) {         return $.extend({}, $.fn.datagrid.parseOptions(target), {         });     };

    $.fn.edatagrid.methods = {         options: function (jq) {             var opts = $.data(jq[0], 'edatagrid').options;             return opts;         },         loadData: function (jq, data) {             return jq.each(function () {                 $(this).edatagrid('cancelRow');                 $(this).datagrid('loadData', data);             });         },         enableEditing: function (jq) {             return jq.each(function () {                 var opts = $.data(this, 'edatagrid').options;                 opts.editing = true;             });         },         disableEditing: function (jq) {             return jq.each(function () {                 var opts = $.data(this, 'edatagrid').options;                 opts.editing = false;             });         },         isEditing: function (jq, index) {             var opts = $.data(jq[0], 'edatagrid').options;             var tr = opts.finder.getTr(jq[0], index);             return tr.length && tr.hasClass('datagrid-row-editing');         },         editRow: function (jq, index) {             return jq.each(function () {                 var dg = $(this);                 var opts = $.data(this, 'edatagrid').options;                 var editIndex = opts.editIndex;                 if (editIndex != index) {                     if (dg.datagrid('validateRow', editIndex)) {                         if (editIndex >= 0) {                             if (opts.onBeforeSave.call(this, editIndex) == false) {                                 setTimeout(function () {                                     dg.datagrid('selectRow', editIndex);                                 }, 0);                                 return;                             }                         }                         dg.datagrid('endEdit', editIndex);                         dg.datagrid('beginEdit', index);                         if (!dg.edatagrid('isEditing', index)) {                             return;                         }                         opts.editIndex = index;                         focusEditor(this);

                        var rows = dg.datagrid('getRows');                         opts.onEdit.call(this, index, rows[index]);                     } else {                         setTimeout(function () {                             dg.datagrid('selectRow', editIndex);                         }, 0);                     }                 }             });         },         addRow: function (jq, index) {             return jq.each(function () {                 var dg = $(this);                 var opts = $.data(this, 'edatagrid').options;                 if (opts.editIndex >= 0) {                     if (!dg.datagrid('validateRow', opts.editIndex)) {                         dg.datagrid('selectRow', opts.editIndex);                         return;                     }                     if (opts.onBeforeSave.call(this, opts.editIndex) == false) {                         setTimeout(function () {                             dg.datagrid('selectRow', opts.editIndex);                         }, 0);                         return;                     }                     dg.datagrid('endEdit', opts.editIndex);                 }

                function _add(index, row) {                     if (index == undefined) {                         dg.datagrid('appendRow', row);                         opts.editIndex = dg.datagrid('getRows').length - 1;                     } else {                         dg.datagrid('insertRow', { index: index, row: row });                         opts.editIndex = index;                     }                 }                 if (typeof index == 'object') {                     _add(index.index, $.extend(index.row, { isNewRecord: true }))                 } else {                     _add(index, { isNewRecord: true });                 }

                dg.datagrid('beginEdit', opts.editIndex);                 dg.datagrid('selectRow', opts.editIndex);

                var rows = dg.datagrid('getRows');                 if (opts.tree) {                     var node = $(opts.tree).tree('getSelected');                     rows[opts.editIndex][opts.treeParentField] = (node ? node.id : 0);                 }

                opts.onAdd.call(this, opts.editIndex, rows[opts.editIndex]);             });         },         saveRow: function (jq) {             return jq.each(function () {                 var dg = $(this);                 var opts = $.data(this, 'edatagrid').options;                 if (opts.editIndex >= 0) {                     if (opts.onBeforeSave.call(this, opts.editIndex) == false) {                         setTimeout(function () {                             dg.datagrid('selectRow', opts.editIndex);                         }, 0);                         return;                     }                     $(this).datagrid('endEdit', opts.editIndex);                 }             });         },         cancelRow: function (jq) {             return jq.each(function () {                 var opts = $.data(this, 'edatagrid').options;                 if (opts.editIndex >= 0) {                     $(this).datagrid('cancelEdit', opts.editIndex);                 }             });         },         destroyRow: function (jq, index) {             return jq.each(function () {                 var dg = $(this);                 var opts = $.data(this, 'edatagrid').options;

                var rows = [];                 if (index == undefined) {                     rows = dg.datagrid('getSelections');                 } else {                     var rowIndexes = $.isArray(index) ? index : [index];                     for (var i = 0; i < rowIndexes.length; i++) {                         var row = opts.finder.getRow(this, rowIndexes[i]);                         if (row) {                             rows.push(row);                         }                     }                 }

                if (!rows.length) {                     $.messager.show({                         title: opts.destroyMsg.norecord.title,                         msg: opts.destroyMsg.norecord.msg                     });                     return;                 }

                $.messager.confirm(opts.destroyMsg.confirm.title, opts.destroyMsg.confirm.msg, function (r) {                     if (r) {                         for (var i = 0; i < rows.length; i++) {                             _del(rows[i]);                         }                         dg.datagrid('clearSelections');                     }                 });

                function _del(row) {                     var index = dg.datagrid('getRowIndex', row);                     if (index == -1) { return }                     if (row.isNewRecord) {                         dg.datagrid('cancelEdit', index);                     } else {                         if (opts.destroyUrl) {                             var idValue = row[opts.idField || 'id'];                             opts.poster.call(dg[0], opts.destroyUrl, { id: idValue }, function (data) {                                 var index = dg.datagrid('getRowIndex', idValue);                                 if (data.isError) {                                     dg.datagrid('selectRow', index);                                     opts.onError.call(dg[0], index, data);                                     return;                                 }                                 if (opts.tree) {                                     dg.datagrid('reload');                                     var t = $(opts.tree);                                     var node = t.tree('find', idValue);                                     if (node) {                                         t.tree('remove', node.target);                                     }                                 } else {                                     dg.datagrid('cancelEdit', index);                                     dg.datagrid('deleteRow', index);                                 }                                 opts.onDestroy.call(dg[0], index, $.extend(row, data));                                 var pager = dg.datagrid('getPager');                                 if (pager.length && !dg.datagrid('getRows').length) {                                     dg.datagrid('options').pageNumber = pager.pagination('options').pageNumber;                                     dg.datagrid('reload');                                 }                             }, function (data) {                                 opts.onError.call(dg[0], index, data);                             });                         } else {                             dg.datagrid('cancelEdit', index);                             dg.datagrid('deleteRow', index);                             opts.onDestroy.call(dg[0], index, row);                         }                     }                 }             });         }     };

    $.fn.edatagrid.defaults = $.extend({}, $.fn.datagrid.defaults, {         singleSelect: true,         editing: true,         editIndex: -1,         destroyMsg: {             norecord: {                 title: 'Warning',                 msg: 'No record is selected.'             },             confirm: {                 title: 'Confirm',                 msg: 'Are you sure you want to delete?'             }         },         poster: function (url, data, success, error) {             $.ajax({                 type: 'post',                 url: url,                 data: data,                 dataType: 'json',                 success: function (data) {                     success(data);                 },                 error: function (jqXHR, textStatus, errorThrown) {                     error({                         jqXHR: jqXHR,                         textStatus: textStatus,                         errorThrown: errorThrown                     });                 }             });         },

        autoSave: false,    // auto save the editing row when click out of datagrid         url: null,    // return the datagrid data         saveUrl: null,    // return the added row         updateUrl: null,    // return the updated row         destroyUrl: null,    // return {success:true}

        tree: null,        // the tree selector         treeUrl: null,    // return tree data         treeDndUrl: null,    // to process the drag and drop operation, return {success:true}         treeTextField: 'name',         treeParentField: 'parentId',

        onAdd: function (index, row) { },         onEdit: function (index, row) { },         onBeforeSave: function (index) { },         onSave: function (index, row) { },         onSuccess: function (index, row) { },         onDestroy: function (index, row) { },         onError: function (index, row) { }     });

        $.parser.plugins.push('edatagrid'); })(jQuery);


最新回复(0)