You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

994 lines
32 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

define(function (require, exports, module) {
var editorHandler = require('../views/editors/handler');
function GridAdapter(id, args, pageId) {
args = _.clone(args);
this.id = id;
this.pageId = pageId;
this.data = {
columns: [],
rows: []
};
this.vmodel = {};
this.selectedRows = [];
this.isGroupHeader = false;
args = args || {};
_init(this, args);
}
function _init(self, args) {
_initOpts(self, args);
_initActions(self, args);
self.isGroupHeader = isGroupHeader(args.data.columns);
//数据源专属操作
if (args.data && args.data.isDataSource) {
_initDs(self, args);
} else {
if (self.isGroupHeader) {
self.data.columns = treeTanversal(flatten2Tree(columns2Flatten(args.data.columns)));
} else {
self.data.columns = _setColumns(self, args.data.columns);
}
self.data.rows = args.data.rows;
}
}
function _initOpts(self, args) {
var opts = {
autoEdit: true,
editable: false,
pageSize: -1,
pagenum: 0,
totalRows: -1,
enableAddRow: false,
enableCellNavigation: true,
defaultColumnWidth: 100,
enableColumnRecorder: true,
dataItemColumnValueExtractor: function (item, columnDef) {
if (item && item.getColumnText) {
return item.getColumnText(columnDef.field);
}
return item[columnDef.field];
}
};
if (args.opts) {
self.opts = _.extend(opts, args.opts);
} else {
self.opts = opts;
}
//分页信息设置
if (args.data && args.data.isDataSource) {
args.data.setPageSize(self.opts.pageSize);
args.data.setPagenum(self.opts.pagenum);
}
}
function _initActions(self, _args) {
self.actions = {
onClick: function (e, args) {
if (_args.actions && typeof _args.actions.onClick == 'function') {
_args.actions.onClick(e, args);
}
},
//grid中删除整行按钮的点击
onColumndeleteButtonClick: function (row) {
if (_args.actions && typeof _args.actions.onColumndeleteButtonClick == 'function') {
_args.actions.onColumndeleteButtonClick(row);
}
},
//点击grid中cell里按钮的方法
onGridCellClick: function (object, row) {
if (_args.actions && typeof _args.actions.onGridCellClick == 'function') {
_args.actions.onGridCellClick(object, row);
}
},
onDblClick: function (e, args) {
if (_args.actions && typeof _args.actions.onDblClick == 'function') {
_args.actions.onDblClick(e, args);
}
},
onRClick: function (e, args) {
self.onRClick(e, args);
if (_args.actions && typeof _args.actions.onRClick == 'function') {
_args.actions.onRClick(e, args);
}
},
onBeforeEditCell: function (e, args) {
if (self.dataSrc && !self.dataSrc.allowEdit) return false;
return self.onBeforeEditCell(e, args);
},
onActiveCellChanged: function (e, args) {
self.onActiveCellChanged(e, args);
},
onBeforeActiveCellChanged: function (e, args) {
return self.onBeforeActiveCellChanged(e, args)
},
onSelectedRowsChanged: function (e, args) {
self.onSelectedRowsChanged(e, args);
if (_args.actions && typeof _args.actions.onSelectedRowsChanged == 'function') {
_args.actions.onSelectedRowsChanged(e, args);
}
},
onSortClicked: function (field, asc) {
if (_args.actions && typeof _args.actions.onSortClicked == 'function') {
_args.actions.onSortClicked(field, asc);
}
},
onAddNewRow: function (e, args) {
if (typeof self.onAddNewRow == 'function') {
self.onAddNewRow(e, args);
}
if (_args.actions && typeof _args.actions.onAddNewRow == 'function') {
_args.actions.onAddNewRow(e, args);
}
},
onRowCountChanged: function (e, args) {
self.onRowCountChanged(e, args);
},
onRowsChanged: function (e, args) {
self.onRowsChanged(e, args);
},
onPagingInfoChanged: function (e, args) {
if (_args.actions && typeof _args.actions.onPagingInfoChanged === 'function') {
_args.actions.onPagingInfoChanged(e, args);
return;
} else {
self.onPagingInfoChanged(e, args);
}
},
onKeyDown: function (e, args) {
if (e.ctrlKey && (e.which == 46 || e.which == 110)) {
var grid = args.grid;
var editable = grid.getOptions().editable;
if (!editable || !self.dataSrc.allowDel) {
return;
}
var dataRow = grid.getDataItem(args.row);
if (dataRow && dataRow.isDataRow) {
dataRow.delete(true);
}
}
if (e.ctrlKey && e.which == 45) {
var grid = args.grid;
var editable = grid.getOptions().editable;
if (!editable || !self.dataSrc.allowInsert) {
return;
}
if (self.dataSrc.currentRow && self.dataSrc.currentRow.validate()) {
self.dataSrc.addRow();
}
}
},
onActiveFirstCell: function () {
if (_args.actions && typeof _args.actions.onActiveFirstCell == 'function') {
_args.actions.onActiveFirstCell();
return;
}
var grid = self.vmodel.$grid;
var nowEditor;
if (grid.getColumns().length) {
for (i = 0; i < grid.getColumns().length; i++) {
grid.setActiveCell(0, i);
grid.editActiveCell();
if (grid.getCellEditor()) {
nowEditor = grid.getCellEditor();
break;
}
}
}
nowEditor.focus();
}
};
// 参数actions覆盖adpter actions不知道原来为什么被注释掉
// if (_args.actions) {
// _.extend(self.actions, _args.actions);
// }
}
function _initDs(self, args) {
self.dataSrc = args.data;
self.opts.editable = self.opts.editable ? true : self.dataSrc.getEditable();
self.opts.enableAddRow = self.dataSrc.allowInsert && self.opts.editable;
self.dataSrc.on('onCollectChanged', function (ds, args) {
if (args.action != Store.Enums.CollectionChangedAction.REPLACE) {
self.setData(ds.rows);
// 分页以及排序情况下不必重置排序
if (ds.isMaster || (!ds.isMaster && !ds.detailPageOrderList)) {
self.resetSort();
}
if (self.dataSrc.getPagenum() == 0) {
self.setPagingOptions({ pageNum: self.dataSrc.getPagenum() }, true);
}
//通常只有reject操作才会出现该现象
if (args.action == Store.Enums.CollectionChangedAction.RESET && ds.currentRow !== null) {
_setGridCurrentRow(self, ds.currentRow, 0);
}
} else {
if (self.vmodel.$grid) {
var grid = self.vmodel.$grid;
var row = self.vmodel.$dataView.getRowById(args.row['$id']);
grid.updateRow(row);
}
}
self.afterDataSrcLoadData();
}, self);
self.dataSrc.on('onValueChanged', function (ds, e) {
if (self.vmodel.$grid) {
var grid = self.vmodel.$grid;
//var idx = self.vmodel.$dataView.getIdxById(e.row['$id']);
var row = self.vmodel.$dataView.getRowById(e.row['$id']);
var col = grid.getColumnIndex(e.col.fieldName);
grid.updateCell(row, col);
//grid.resizeCanvas();
}
// self.afterDataSrcLoadData();
}, self);
self.dataSrc.on('onPropertyChanged', function (ds, e) {
if (e.propertyName == 'Editable') {
self.setEditable(ds.getEditable());
}
}, self);
self.dataSrc.on('onCurrentChanged', function (ds, e) {
_setGridCurrentRow(self, e.newRow);
}, self);
self.dataSrc.on('commitEdit', function (ds, e) {
e.isCancel = !self.commitEditor();
//在beforeSave前移除空行
if (!e.isCancel) {
self.dataSrc.removeEmptyRow();
}
}, self);
self.dataSrc.on('onAfterDataSrcLoadData', function (ds, e) {
self.afterDataSrcLoadData();
self.resizeGrid();
}, self);
self.dataSrc.on('onAfterDataSrcSave', function (ds, e) {
self.afterDataSrcLoadData();
}, self);
args.data = {
columns: _setColumns(self, self.dataSrc.columns),
rows: self.dataSrc.rows
};
self.data = args.data;
}
//////////////////////////////////////////////////////////////////////////////////////////////
//提供的方法实现
function _setGridCurrentRow(self, dataRow, cellCol) {
if (self.vmodel.$dataView && self.vmodel.$grid) {
var newCell = null
if (!dataRow) {
self.vmodel.$grid.resetActiveCell()
return
}
var index = self.vmodel.$dataView.getRowById(dataRow.$id);
var oldActiveCell = self.vmodel.$grid.getActiveCell();
if (oldActiveCell && oldActiveCell.row == index) {
return
}
newCell = {
row: index > -1 ? index : 0,
col: oldActiveCell ? oldActiveCell.cell : 0
};
if (cellCol !== undefined) {
newCell.col = cellCol;
}
if (self.vmodel.$grid.getEditorLock()) {
self.vmodel.$grid.getEditorLock().cancelCurrentEdit()
}
self.vmodel.$grid.setActiveCell(newCell.row, newCell.col);
// self.vmodel.$grid.scrollRowIntoView(newCell.row, false);
}
}
/**
* 设置网格列的属性
* @param {[type]} gridColumn [description]
* @param {[type]} dataColumn [description]
*/
function _setColumnOptions(gridColumn, dataColumn) {
gridColumn.id = dataColumn.fieldName;
gridColumn.sortable = true;
gridColumn.field = dataColumn.fieldName;
gridColumn.width = parseInt(dataColumn.headerWidth) * 12;
if (gridColumn.width < 56) {
gridColumn.width = 56;
}
gridColumn.name = dataColumn.dispName;
gridColumn.isCalc = dataColumn.isCalc;
gridColumn.formatter = dataColumn.getFormatter();
gridColumn.isEditable = dataColumn.isEditable;
gridColumn.dataColumn = dataColumn;
gridColumn.cannotTriggerInsert = !dataColumn.isEditable;
//2015-10-08添加这个属性用来判断时是否可以编辑。
gridColumn.isReadonly = !dataColumn.isEditable;
if (!dataColumn.isEditable) {
gridColumn.cssClass = 'column-un-editable';
} else {
gridColumn.cssClass = 'column-un-edit';
}
if (dataColumn.editStyle === Store.Enums.EditStyle.DECIMAL) {
gridColumn.cssClass = gridColumn.cssClass ? gridColumn.cssClass + ' decimal-column-show' : 'decimal-column-show';
}
gridColumn.validator = function (item, newValue) {
var result = {};
if (dataColumn) {
result.valid = dataColumn.validator(item, newValue);
if (!result.valid) {
result.msg = item.getColumnError(dataColumn.fieldName);
}
}
return result;
}
gridColumn.editor = editorHandler.getEditor(dataColumn.editStyle);
if (dataColumn.dataSrc) {
gridColumn.cache = (dataColumn.dataSrc.datasetName + '_' + dataColumn.fieldName).toLowerCase();
}
}
function _setColumns(self, dataColumns) {
var columns = [];
var orderCols = [];
var sortedColumns = _.sortBy(dataColumns, 'dispIndex');
var pageIdArray = null;
if (self.opts.pageId) {
pageIdArray = self.opts.pageId.split(',');
for (var i = 0; i < pageIdArray.length; i++) {
orderCols = orderCols.concat(_.where(dataColumns, {
'pageId': parseInt(pageIdArray[i])
}));
}
orderCols = _.sortBy(orderCols, 'dispIndex');
} else {
orderCols = sortedColumns;
}
for (var i = 0; i < orderCols.length; i++) {
var column = {};
var item = orderCols[i];
if ((item.procParaType == Store.Enums.ProcParaType.NONE || !item.procParaType)
&& (item.dispPosition == '0' || item.dispPosition == '1')) {
_setColumnOptions(column, item);
columns.push(column);
}
}
if (self.isGroupHeader) {
columns = treeTanversal(flatten2Tree(columns2Flatten(columns)));
}
return columns;
}
function columns2Flatten(columns) {
var array = [];
for (var i = 0; i < columns.length; i++) {
var names = columns[i].name.split('|');
var fields = columns[i].field.split('|');
if (fields.length > 1) { //分组
for (var j = 0; j < fields.length; j++) {
var column = {};
column.name = names[j];
column.sid = fields[j];
column.headerCssClass = 'text-center';
if (j == 0) {
column.pid = 0;
} else {
column.pid = fields[j - 1];
}
if (j < (fields.length - 1)) {
column.id = fields[0];
array.push(column);
} else if (j == (fields.length - 1)) { //末级
columns[i].name = names[j];
columns[i].sid = fields[j];
columns[i].pid = fields[j - 1];
array.push(columns[i]);
}
}
;
} else { //无分组
columns[i].sid = columns[i].id;
columns[i].pid = 0;
array.push(columns[i]);
}
}
;
return array;
}
function isGroupHeader(columns) {
for (var i = 0; i < columns.length; i++) {
if (columns[i].field) {
var fields = columns[i].field.split('|');
if (fields.length > 1) {
return true;
}
}
;
}
;
return false;
}
function flatten2Tree(arr) {
var tree = [],
mappedArr = {},
arrElem,
mappedElem;
for (var i = 0, len = arr.length; i < len; i++) {
arrElem = arr[i];
mappedArr[arrElem.id] = arrElem;
mappedArr[arrElem.id]['columns'] = [];
}
for (var sid in mappedArr) {
if (mappedArr.hasOwnProperty(sid)) {
mappedElem = mappedArr[sid];
if (mappedElem.pid) {
mappedArr[mappedElem['pid']]['columns'].push(mappedElem);
} else {
tree.push(mappedElem);
}
}
}
return tree;
}
function treeTanversal(tree) {
for (var i = 0; i < tree.length; i++) {
if (tree[i].hasOwnProperty('columns')) {
if (tree[i].columns.length == 0) {
var column = _.clone(tree[i]); //JSON.parse(JSON.stringify(tree[i]));
delete column.columns;
tree[i].columns.push(column);
tree[i].name = '';
delete tree[i].field;
} else {
trimArray(tree[i].columns);
}
}
}
return tree;
}
function trimArray(arr) {
for (var i = 0; i < arr.length; i++) {
if (arr[i].hasOwnProperty('columns')) {
if (arr[i].columns.length == 0) {
delete arr[i].columns;
} else {
trimArray(arr[i].columns);
}
}
}
;
}
GridAdapter.prototype.onPagingInfoChanged = function (e, args) {
var self = this;
if (Number.isNaN(args.pageNum) || args.pageNum < 0 || args.pageNum == self.dataSrc.getPagenum() || self.dataSrc.getTotalRows() <= 0) {
return;
}
self.dataSrc.setPagenum(args.pageNum);
self.dataSrc.search(function () {
//self.vmodel.$grid.resizeCanvas();
self.vmodel.$resizeGrid();
}, {
reset: false
});
/*
var prevPageSize = self.dataSrc._pageSize;
var prevPageNum = self.dataSrc._pagenum;
var prevTotalRows = self.dataSrc._totalRows;
if ((prevPageSize == args.pageSize && prevPageNum == args.pageNum) || (args.totalRows == 0 && args.totalPages == 1)) {
//DataSurce.clear()触发onCollectChanged引起pageingInfo改变不作处理
self.vmodel.$grid.resizeCanvas();
return;
}
if (prevPageSize == -1 && (args.pageSize == 0 || args.pageNum == 0)) {
self.dataSrc.setPageSize(args.pageSize);
self.vmodel.$grid.resizeCanvas();
return;
}
if (prevPageNum != args.pageNum) { //页码改变
if (prevPageSize == -1) { //刷新按钮重置为第1页
self.dataSrc.setPagenum(0);
self.setPagingOptions({
pageNum: 0
}, true);
} else {
self.dataSrc.setPagenum(args.pageNum);
}
}
if (prevPageSize != args.pageSize) { //每页显示行数发生改变
self.dataSrc.setPagenum(0);
self.dataSrc.setPageSize(args.pageSize);
self.setPagingOptions({
pageNum: 0
});
}
self.dataSrc.search(function() {
self.vmodel.$grid.resizeCanvas();
});*/
}
GridAdapter.prototype.setOptions = function (opts) {
this.vmodel.$grid.getEditorLock().cancelCurrentEdit();
this.vmodel.$grid.setOptions(opts);
};
/**
* 重绘行高
*/
GridAdapter.prototype.resizeRowHeight = function () {
this.vmodel.$resizeRowHeight();
};
GridAdapter.prototype.resizeGrid = function () {
this.vmodel.$resizeGrid && this.vmodel.$resizeGrid();
};
/**
* 下移一行
* @return {Function} [description]
*/
GridAdapter.prototype.next = function () {
this.vmodel.$grid.navigateDown();
};
/**
* 上移一行
* @return {[type]} [description]
*/
GridAdapter.prototype.prev = function () {
this.vmodel.$grid.navigateUp();
};
/**
* 根据显示行地址获取行数据
* @param {[type]} index [description]
* @return {[type]} [description]
*/
GridAdapter.prototype.getData = function (index) {
if (!this.vmodel.$dataView) {
return null;
}
return this.vmodel.$dataView.getItem(index);
};
/**
* 修改网格整体数据
* @param {[type]} rows [description]
*/
GridAdapter.prototype.setData = function (rows) {
if (!this.vmodel.$dataView) {
return;
}
var grid = this.vmodel.$grid
if (grid) {
grid.invalidateAllRows();
}
this.vmodel.$dataView.setItems(rows, '$id');
};
GridAdapter.prototype.getItems = function () {
if (!this.vmodel.$dataView) {
return [];
}
return this.vmodel.$dataView.getItems();
};
GridAdapter.prototype.selectAll = function () {
this.setSelectedRows(_.range(this.vmodel.$dataView.getItems().length))
};
GridAdapter.prototype.resetSort = function () {
if (this.vmodel && this.vmodel.$grid) {
this.vmodel.$grid.setSortColumn(null);
}
}
GridAdapter.prototype.setEditable = function (isOk) {
if (!this.vmodel || !this.vmodel.$grid)
return;
var args = {};
args.editable = isOk;
args.enableAddRow = isOk && this.dataSrc.allowInsert;
this.setOptions(args);
this.vmodel.$resetSelectorScrollSize();
};
GridAdapter.prototype.updateSelection = function () {
if (!this.vmodel.$grid) return;
var items = this.getItems()
var rows = []
for (var i = 0; i < items.length; i++) {
if (items[i].$is_sel) {
rows.push(i)
}
}
this.vmodel.$grid.setSelectedRows(rows)
}
GridAdapter.prototype.setSelectedRows = function (rows) {
if (!this.vmodel.$grid) return;
this.vmodel.$grid.setSelectedRows(rows)
};
GridAdapter.prototype.getSelectedRows = function (rows) {
if (!this.vmodel.$grid) return [];
return this.vmodel.$grid.getSelectedRows();
};
GridAdapter.prototype.onAddNewRow = function (e, args) {
if (!args.item) {
var grid = args.grid;
var dataView = grid.getData();
grid.invalidateRow(dataView.getLength());
if (this.dataSrc.allowInsert && this.dataSrc.beforeAddFirstRow()) {
var dsMaster = this.dataSrc.getMaster();
if (!dsMaster) {
this.dataSrc.addRow()
return
}
if (dsMaster.currentRow) {
this.dataSrc.addRow()
return
}
}
setTimeout(function () {
grid.resetActiveCell();
grid.render();
}, 100);
}
};
GridAdapter.prototype.onRowsChanged = function (e, args) {
var grid = args.grid;
grid.invalidateAllRows();
grid.render();
};
GridAdapter.prototype.render = function () {
if (!this.vmodel.$grid) return;
var grid = this.vmodel.$grid
grid.invalidateAllRows();
grid.render();
}
GridAdapter.prototype.onRowCountChanged = function (e, args) {
var grid = args.grid;
grid.updateRowCount();
grid.render();
};
GridAdapter.prototype.onBeforeEditCell = function (e, args) {
var grid = args.grid;
if (this.dataSrc && args.cell !== null && args.row != null) {
var dr = args.item,
dc = grid.getColumns()[args.cell].dataColumn;
if (!dr || !dr.isDataRow) {
return true;
}
if (!dc) {
return true;
}
//主键字段在行编辑时,不允许编辑
var allowEdit = !this.dataSrc.getFieldReadOnly(dr, dc);
if (!allowEdit) {
return false;
}
}
return true;
};
function checkEditLimitRequire(ds) {
var curRow = ds.currentRow,
pass = true;
for (var i = 0; i < ds.columns.length; i++) {
var item = ds.columns[i];
if ((item.fieldName !== "DepId") && (item.fieldName !== "DepCode")) { //2020-06-03临时加上主要是明细表增加行时老报主表部门不能为空错误
if (item.isEditLimit && !item.isEmptyField && !curRow[item.fieldName] && curRow[item.fieldName] !== 0) {
var msg = Store.format(Store.MSG.GRID_EDITLIMIT_FORBIDDEN, item.dispName);
Store.messager.warn(msg);
pass = false;
return pass;
}
}
}
return pass;
}
GridAdapter.prototype.onBeforeActiveCellChanged = function (e, args) {
var grid = args.grid;
if (!grid.getOptions().editable) { //grid不可编辑时不进行行切换校验
return true;
}
var cell = grid.getActiveCell() || {};
var newCell = args.newCell
if (!newCell) return false
if (newCell.row != undefined && newCell.cell != undefined && newCell.row !== cell.row) { //行切换校验
var dataRow = grid.getDataItem(cell.row);
var onerror = function (msg) {
//grid.goBackToCell(activeRow, activeCell, true);
Store.messager.err(msg);
};
if (dataRow && !this.dataSrc.validateDataRow(dataRow, onerror)) {
return false;
}
}
return true;
};
GridAdapter.prototype.onActiveCellChanged = function (e, args) {
if (!this.dataSrc) {
return;
}
var grid = args.grid;
var dataSrc = this.dataSrc;
var cell = grid.getActiveCell();
if (cell) {
var dataRow = grid.getDataItem(cell.row);
//如果dataRow为有效行且与数据源当前行不一致则更新当前行
if (dataRow && dataRow !== dataSrc.currentRow) {
var oldRow = dataSrc.currentRow;
dataSrc.setCurrentRow(dataRow);
}
} else {
//界面操作不会导致空行
//dataSrc.setCurrentRow(null);
var s = 1;
}
};
function setRowIsSelected(grid, rowIndexs, isSelected) {
let selectedRows = []
for (var i = 0; i < rowIndexs.length; i++) {
var idx = rowIndexs[i];
var row = grid.getDataItem(idx);
selectedRows.push(row)
if (row) {
row.$is_sel = isSelected;
}
}
return selectedRows
}
GridAdapter.prototype.onSelectedRowsChanged = function (e, args) {
var grid = args.grid;
setRowIsSelected(grid, args.previousSelectedRows, false)
args.selectedRows = setRowIsSelected(grid, args.rows, true)
};
GridAdapter.prototype.setFilter = function (filter) {
var dataView = this.vmodel.$dataView;
if (dataView) {
dataView.setFilter(filter);
}
};
/**
* [setSelectboxDisable 设置grid第一列的checkbox是否可以点击]
* @param {[type]} flag [flag为true时设置checkbox为disableflag为false时设置checkbox为enable]
*/
GridAdapter.prototype.setSelectboxDisable = function (flag) {
var headerId = this.vmodel.$grid.getColumns()[0].id;
//判断第一列是不是checkboxselector
if (headerId != "_checkbox_selector") return;
var headerNode = "<input type='checkbox'" + (flag ? " disabled=true>" : ">");
if (flag) {
this.vmodel.$grid.updateColumnHeader(headerId, headerNode);
}
for (var i = 0; i < this.vmodel.$columns.length; i++) {
if (this.vmodel.$columns[i].id === "_checkbox_selector") {
this.vmodel.$columns[i].uncheckable = flag;
break;
}
}
this.vmodel.$grid.invalidateAllRows();
this.vmodel.$grid.render();
}
GridAdapter.prototype.setColumnEditable = function (field, flag) {
var columns = this.vmodel.$columns;
for (var i = 0; i < columns.length; i++) {
if (columns[i].field == field) {
columns[i].isReadonly = !flag;
}
}
;
}
GridAdapter.prototype.setPagingOptions = function (options, force) {
if (!this.vmodel.$dataView) {
return;
}
this.vmodel.$dataView.setPagingOptions(options, force);
}
GridAdapter.prototype.commitEditor = function () {
return this.vmodel.$grid.getEditorLock().commitCurrentEdit();
}
GridAdapter.prototype.addContextMenu = function (fn) {
this._contextMenu = fn;
};
GridAdapter.prototype.removeContextMenu = function () {
delete this._contextMenu;
};
GridAdapter.prototype.onRClick = function (e, args) {
if (this._contextMenu) {
//只有网格允许编辑时,才可以弹出右键
// var editable = this.vmodel.$grid.getOptions().editable;
// if (editable) {
e.preventDefault();
this._contextMenu({
top: e.pageY,
left: e.pageX
}, {
data: this.dataSrc,
items: this.dataSrc.onGetContextMenus(this.id) || []
});
// }
}
};
GridAdapter.prototype.toggleRowsSelection = function () {
this.vmodel.$toggleRowsSelection();
};
GridAdapter.prototype.afterDataSrcLoadData = function () {
this.vmodel.$setHeaderColumnData();
this.vmodel.$resetSelectorScrollSize();
};
GridAdapter.prototype.getSchemaData = function (hasData) {
if (!this.dataSrc) {
return [];
}
var rows = [],
columns = [],
vmodel = this.vmodel;
var $columns = vmodel.$grid.getColumns();
for (var i = 0; i < $columns.length; i++) {
var gridCol = $columns[i];
if (gridCol.dataColumn) {
columns.push({
fieldName: gridCol.dataColumn.fieldName,
dispName: gridCol.dataColumn.dispName,
paraValue: gridCol.dataColumn.paraValue
});
}
}
if (hasData) {
for (var j = 0; j < this.dataSrc.rows.length; j++) {
var dr = this.dataSrc.rows[j];
var row = {};
for (var k = 0; k < columns.length; k++) {
row[columns[k].fieldName] = dr.getColumnText(columns[k].fieldName);
}
;
rows.push(row);
}
}
var searchParams = this.dataSrc.getSchemaData();
return {
uiObjCode: this.dataSrc.uiObjCode,
funcCode: this.dataSrc.funcCode,
queryParams: searchParams.queryParams,
columnParams: searchParams.columnParams,
rows: rows,
columns: columns
};
};
GridAdapter.prototype.getNode = function (row, column) {
var self = this;
for (var i = 0; i < self.vmodel.$grid.getOptions().pageSize; i++) {
if (self.vmodel.$grid.getDataItem(i).$id === row.$id) {
var rownum = i;
break;
}
}
return self.vmodel.$grid.getCellNode(rownum, column);
};
GridAdapter.prototype.destroy = function() {
if (this.vmodel.$grid) {
this.vmodel.$grid.destroy()
}
if (this.dataSrc) {
this.dataSrc.unmount(this)
}
}
return GridAdapter;
})