Handtable封装类,所有的Table都需要通过此工具操作表格

回顾

发这个贴的原因,是因为 是因为 是因为啥来着,忘了 那就是因为你,因为你 。

代码


/**
 * @author 张建新
 * @数据表格加载
 * @callback 无
 * @DataType tableTools.init(@Coulnms) <-调用方式
 * @Coulnms List result
 * (@所在div,@列数据(以及类型),@表格装载数据,@表头数据(中文),@是否激活右键菜单(右键可以开启只读模式),@是否表格只读)
 **/
var HandtableTools = {
	/**
	 * HandtableTools 工具初始化方法
	 * @param {Object} tableContainerDiv 表格载体Div
	 * @param {Object} tableColumnInfo 表格列信息
	 * @param {Object} contextMenuFlag 是否显示右键列表
	 * @param {Object} readOnlyFlag 表格是否只读
	 */
	initColumnsType: function(tableContainerDiv, tableColumnInfo, contextMenuFlag, readOnlyFlag) {
		/*初始化表格基本信息*/
		HandtableTools.tableContainerDiv = tableContainerDiv;
		HandtableTools.tableColumnInfo = tableColumnInfo;
		HandtableTools.contextMenuFlag = contextMenuFlag;
		HandtableTools.readOnlyFlag = readOnlyFlag;
	},
	/**
	 * 当前表格容器Div
	 */
	tableContainerDiv: null,
	/**
	 * 当前表格列基本信息
	 */
	tableColumnInfo: null,
	/**
	 * 是否显示右键列表
	 */
	contextMenuFlag: null,
	/**
	 * 表是否只读
	 */
	readOnlyFlag: null,
	/*
	 * 最终插入的数据 
	 */
	insertData: null,
	/**
	 * 表格控制器
	 */
	handsontableControl: null,
	/**
	 *初始化表格数据 
	 * @param {Object} gridData
	 */
	initTableData: function(gridData) {
		/**
		 * 表格列信息
		 */
		var columnsInfo = [];
		/**
		 * 表头中文信息
		 */
		var columnsHeadersInfo = [];
		/**
		 * 初始化插入数据
		 */
		HandtableTools.insertData = new Array();
		/**
		 * 遍历表格数据 加载到插入数据
		 */
		for (var i = 0; i < gridData.length; i++) {
			HandtableTools.insertData[i] = new Object();
			for (var j = 0; j < HandtableTools.tableColumnInfo.length; j++) {
				/**eval('HandtableTools.insertData[' + i +'].' + HandtableTools.tableColumnInfo[j].fieid + "=null");*/
				HandtableTools.insertData[i][HandtableTools.tableColumnInfo[j].fieid.toUpperCase()] = 0;
			}
		}
		/**
		 * 设置表格列信息
		 */
		for (var i = 0; i < HandtableTools.tableColumnInfo.length; i++) {
			columnsInfo.push({
				data: '',/**真实列名*/
				type: '',/**数据类型*/
				readOnly: '',/**列只读*/
				comment:''/**注释*/
			
			});
		}
		/**清空数据*/
		columnsHeadersInfo.length = 0;
		/**解析表格列信息 标注中文列名*/
		for (var c = 0; c < HandtableTools.tableColumnInfo.length; c++) {
			/**标注中文列名*/
			columnsHeadersInfo.push(HandtableTools.tableColumnInfo[c].alias);
		}
		
		for (var c = 0; c < HandtableTools.tableColumnInfo.length; c++) {
			/**设置列真实Data*/
			columnsInfo[c]['data'] = HandtableTools.tableColumnInfo[c].fieid.toUpperCase();
			/**设置列类型*/
			columnsInfo[c]['type'] = "" + HandtableTools.tableColumnInfo[c].genre + "";
			/**设置comments*/
			columnsInfo[c]['comment'] = "" + HandtableTools.tableColumnInfo[c].comat + "";
			/**判断是否是主键 如果是主键不允许修改*/
			if (HandtableTools.tableColumnInfo[c].ispk == "t" && HandtableTools.tableColumnInfo[c].ispk != "") {
				columnsInfo[c]['readOnly'] = true; /**可以修改列*/
			} else {
				columnsInfo[c]['readOnly'] = false; /**列不能修改*/
			}
		}
		console.log(HandtableTools.tableContainerDiv);
		HandtableTools.obs = columnsInfo;
		HandtableTools.handsontableControl = new Handsontable(HandtableTools.tableContainerDiv, {
			colHeaders: columnsHeadersInfo, /**显示列数据中文列名*/
			rowHeaders: true, /**显示行号*/
			/**minSpareRows: 1,/**预留行*/
			stretchH: 'all', /**自适应*/
			columnSorting: true, /**序列化*/
			/**contextMenu: contextMenu_flag,/**是否开启右键*/
			contextMenu:HandtableTools.contextMenuFlag,
			comments: false, /**开启单个表格注解*/
			readOnly: HandtableTools.readOnlyFlag, /**表格是否只读*/
			className: "htCenter htMiddle", /**基本样式*/
			removeRowPlugin: false, /**删除行插件*/
			fixedColumnsLeft: 3,/**设置固定列*/
			autoColumnSize:true, /**自适应列*/
			manualColumnMove: true, /**左右移动*/
			manualRowMove: false,	/**数据跟随移动*/
			columns: columnsInfo/**表格列信息*/
		});
		HandtableTools.handsontableControl.clear;/**清除数据*/
		HandtableTools.handsontableControl.destroy;/**清除DOM对象*/
		HandtableTools.handsontableControl.loadData(gridData); /**表格加载数据*/
	},
	obs: [],
	objData: function() {
		var tempData = HandtableTools.handsontableControl.getData();
		for (var i = 0; i < tempData.length; i++) {
			for (var j = 0; j < HandtableTools.obs.length; j++) {
				if(tempData[i][j]==null||tempData[i][j]==''){
					HandtableTools.insertData[i][HandtableTools.obs[j]["data"].toUpperCase()] = 0.0;
				}else{
					HandtableTools.insertData[i][HandtableTools.obs[j]["data"].toUpperCase()] = tempData[i][j];
				}
			}
		}
	}
}