⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grid.js

📁 java script web控件 包含了树 列表 表单的操作
💻 JS
📖 第 1 页 / 共 4 页
字号:
				cellData = null;
			}
			var cellName = column.name;
			var names = oThis.getNamesOfColumn(column);
			if(names.length==1){
				rowData[names[0]] = cellData;
			}else{
				
				var obj = rowData[names[0]];
				if(obj == null){
					obj = new Object();
					rowData[names[0]] = obj;
				}
				rowData[names[0]][names[1]] = cellData;
			}
		}
		oThis.afterAdd_Delete();
		return oThis.addRow(rowData);
	}
	
	this.bindData = function(_data){
		//全选标记复位
		if(oThis.getContext().checkBox == true){
			var lockedTabHeader = element.all("lockedTabHeader");
			lockedTabHeader.rows[0].cells[0].children[0].checked = false;
		}
		rows.removeAll(); //删除所有行引用
		selectedRows.removeAll();
		oThis.clearData(); //删除所有行对应的dom对象
		value = _data;
		for(var i=0;i<value.length;i++){
			var row = new SigmaRow(oThis,i);
			rows[i] = row;
		}
		oThis.refreshScrollers();
		
		var sumRow = new SumRow(oThis);
		if(oThis.sumRow!=null){
			oThis.sumRow.refresh();
		}
		

		
	}

	this.compRowByColumn = function(row1,row2,colName,ordinal){
		var v1 = oThis.getPropertyOfRow(row1,colName);
		var v2 = oThis.getPropertyOfRow(row2,colName);
		var r = 0;
		var column = oThis.getColumnByName(colName);
		if(column.mode=="number" || column.mode=="money"){
			r = v1-v2;
		}else if(column.mode=="check"){
			if(v1==null) v1=false;
			if(v2==null) v2=false;
			if(v1==v2){
				r = 0;
			}else{
				r = v1>v2?1:-1;
			}
		}else{
			r = v1.localeCompare(v2);
		}
		
		if(ordinal==false){
			return -r;
		}
		return r;
	}

	this.sortByColumn = function(colName,order){
		var v = oThis.getValue();
		if(order=="desc"){
			order = false;
		}else{
			order = true;
		}
		v.sort(
			function comp(r1,r2){
				return oThis.compRowByColumn(r1,r2,colName,order);
			}
		);
		oThis.bindData(v);
	}

	

	
	this.getColumnWidth = function(column){
		if(column.width == null){
			return 100;
		}else{
			return parseInt(column.width);
		}
	}

	this.selectAll = function(selected){
		if(context.checkBox){
			selectedRows = [];
			for(var i=0;i<rows.length;i++){
				var td = rows[i].autoCreatedCell["auto_checkbox"];
				var input = td.children(0);
				input.checked = selected;
				rows[i].setSelected(input.checked);
			}
		}
	}



	this.getColumnsInfo = function(){
		return columns;
	}

	this.checkColumns = function(){
		return true;
		//1、检查mode="select"的列是否绑定选择的集合
		for(var i=0;i<columns.length;i++){
			var column = columns[i];
			if(column.mode=="select"){
				var selectArr = column.options;
				if(selectArr==null || selectArr.length<1)
					alert("列'"+column.caption + "'缺少选项");
			}
		}
	}

	
	this.columnHeaders = new Array();

	this.bindHeader = function(_columns){
		columns = _columns;
		oThis.checkColumns();
		var lockedTabHeader = element.all("lockedTabHeader");
		try{
			lockedTabHeader.deleteRow(0);
		}catch(e){

		}

		var row = lockedTabHeader.insertRow();
		oThis.getLockedColumns();

		var start = 0;
		if(context.checkBox){
			var cell = row.insertCell(start);
			var input = document.createElement("input"); 
			input.type = "checkbox";
			input.onclick = function(){
				oThis.selectAll(this.checked);
			};
			cell.appendChild(input);
			cell.className = "header";
			cell.style.width = 40;
			start++;
		}else if(context.radioBox){
			var cell = row.insertCell(start);
			start++;
			cell.className = "header";
			cell.style.width = 40;
			cell.innerText = " ";
		}
		if(context.sequence){
			var cell = row.insertCell(start);
			cell.innerText = "序号";
			cell.className = "header";
			cell.style.width = 40;
			cell.onclick = function(){
			}
			start++;
		}

		for(var i=0;i<lockedColumns.length;i++){
			var column = lockedColumns[i];
			var cell = row.insertCell(start+i);
			cell.column = column;
			cell.className = "header";
			cell.innerText = column.caption;
			cell.style.width = oThis.getColumnWidth(column);
			cell.order = "desc"
			cell.onmouseover = function(){
				this.style.cursor = "hand";
			}
			cell.onmouseout = function(){
				this.style.cursor = "";
			}
			cell.onclick = function(){
				if(this.order == "asc"){
					this.order = "desc";
				}else{
					this.order = "asc";
				}
				oThis.sortByColumn(this.column.name,this.order);
			}
			oThis.columnHeaders[column.name] = cell;
			
		}

		//画非锁定列表头
		var unLockedTabHeader = element.all("unLockedTabHeader");
		try{
			unLockedTabHeader.deleteRow(0);
		}catch(e){

		}
		var row2 = unLockedTabHeader.insertRow();
		oThis.getUnLockedColumns();
		for(var i=0;i<unLockedColumns.length;i++){
			var column = unLockedColumns[i];
			var cell = row2.insertCell(i);
			cell.column = column;
			cell.className = "header";
			cell.innerText = column.caption;
			cell.style.width = oThis.getColumnWidth(column);	
			oThis.columnHeaders[column.name] = cell;

			cell.onmouseover = function(){
				this.style.cursor = "hand";
			}
			cell.onmouseout = function(){
				this.style.cursor = "";
			}
			cell.onclick = function(){
				if(this.order == "asc"){
					this.order = "desc";
				}else{
					this.order = "asc";
				}
				oThis.sortByColumn(this.column.name,this.order);
			}
		}
	}
	


	this.getLockedColumns = function(){
		if(lockedColumns==null){
			lockedColumns = oThis.getColumns("true");
		}
		return lockedColumns;
	}

	this.getUnLockedColumns = function(){
		if(unLockedColumns==null)
			unLockedColumns = oThis.getColumns("false");
		return unLockedColumns;
	}

	this.getOrderedColumns = function(){
		var array = [];
		var locked = oThis.getLockedColumns();
		var unlocked = oThis.getUnLockedColumns();
		
		for(var i=0;i<locked.length;i++){
			array[array.length] = locked[i];
		}
		for(var i=0;i<unlocked.length;i++){
			array[array.length] = unlocked[i];
		}
		return array;
	}

	this.clearAllListener = function(){
		for(var i=0;i<columns.length;i++){
			var c = columns[i];
			if(c.listener!=null){
				c.listener = null;
			}
		}
	}


	this.getColumns = function(locked){
		var cs = [];
		for(var i=0;i<columns.length;i++){
			var c = columns[i];
			if(c.locked == null){
				c.locked = "false";
			}
			if(locked==c.locked){
				cs[cs.length] = columns[i];
			}
		}
		return cs;
	}

	this.getColumnByName = function(colName){
		for(var i=0;i<columns.length;i++){
			column = columns[i];
			if(column.name == colName){
				return column;
			}
		}
		return null;
	}

	this.getRows = function(){
		return rows;
	}

	this.getRow = function(index){
		return rows[index];
	}

	this.onRowDbClick = function(){
	}

	this.onSelect = function(){
	}

	var colResize = element.all("colResize");
	var headerArea = element.all("headerArea");
	var rs_start = 0;
	var start_width = 0;
	var nextColStartWidth = 0;

	this.setColumnWidth = function(column,newWidth){
		column.width = newWidth;
		oThis.debug("set column name,column:" + column.name + ",width:" + column.width);
		//列头宽度
		oThis.columnHeaders[column.name].style.width = newWidth;
	
		for(var i=0;i<rows.length;i++){
			var row = rows[i];
			var cell = row.cells[column.name].element;
			cell.style.width = newWidth;
		}
	}

	headerArea.onmousemove = function(){
		var cell = oThis.findResizingCell();
		if(cell!=null){
			offset =  event.clientX - rs_start;
			var newWidth = start_width + offset;
			if(newWidth<5){
				newWidth = 5;
				offset = newWidth - start_width;
			}
			
			oThis.setColumnWidth(cell.column,newWidth);
			if(offset<0){
				var column = oThis.getNextColumn(cell.column);
				if(column!=null){
					var nextColWidth = nextColStartWidth - offset;
					oThis.setColumnWidth(column,nextColWidth);
				}
			}
			oThis.refreshScrollers();
			return;
		}

		var src = window.event.srcElement;
		if(src.column!=null){
			if(src.resizing==null || src.resizing==false){
				if(src.offsetWidth - event.offsetX<=3){
					oThis.element.style.cursor = "E-resize";
				}else{
					oThis.element.style.cursor = "";
				}
			}
		}
	}

	
	headerArea.onmousedown = function(){
		var src = window.event.srcElement;
		if(src.column!=null){
			if(src.offsetWidth - event.offsetX<=3){
				src.resizing = true;
				rs_start = event.clientX;
				oThis.beginResizeColumn(src);
			}
		}
	}

	headerArea.onmouseup = function(){
		var src = window.event.srcElement;
		if(src.column!=null){
			src.resizing = false;
		}
	}

	headerArea.onmouseout = function(){
		var cell = oThis.findResizingCell();
		if(cell==null){
			oThis.element.style.cursor = "";
		}
	}

	this.findResizingCell = function(){
		var lockedTabHeader = element.all("lockedTabHeader");
		var unLockedTabHeader = element.all("unLockedTabHeader");
		var cells = lockedTabHeader.rows[0].cells;
		var left = 0;
		for(var i=0;i<cells.length;i++){
			var cell = cells[i];
			if(cell.resizing == true){
				return cell;
			}
		}

		cells = unLockedTabHeader.rows[0].cells;
		for(var i=0;i<cells.length;i++){
			var cell = cells[i];
			if(cell.resizing == true){
				return cell;
			}
		}
	}
	
	this.beginResizeColumn = function(cell){
		start_width = cell.offsetWidth;
		var nextColumn = oThis.getNextColumn(cell.column);
		nextColStartWidth = oThis.getColumnWidth(nextColumn);
		oThis.debug("begin resize:" + cell.column.name + "'s width="+cell.offsetWidth+"; "+nextColumn.name+"'s width="+nextColStartWidth);
	}

	this.getNextColumn = function(column){
		var columns = oThis.getOrderedColumns();
		var i = columns.indexOf(column);
		i++;
		if(i<columns.length){
			return columns[i];
		}else
			return null;
	}

	this.getColumnLeft = function(column){
		var lockedTabHeader = element.all("lockedTabHeader");
		var unLockedTabHeader = element.all("unLockedTabHeader");
		var cells = lockedTabHeader.rows[0].cells;
		var left = 0;
		for(var i=0;i<cells.length;i++){
			var cell = cells[i];
			var c = cell.column;
			if(c == column){
				return left;
			}else{
				left += cell.offsetWidth;
			}
		}

		cells = unLockedTabHeader.rows[0].cells;
		for(var i=0;i<cells.length;i++){
			var cell = cells[i];
			var c = cell.column;
			if(c == column){
				return left;
			}else{
				left += cell.offsetWidth;
			}
		}
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -