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

📄 grid.base.js

📁 news新闻系统. news新闻系统 news新闻系统
💻 JS
📖 第 1 页 / 共 4 页
字号:
			}
			return j-ret;
		};
		this.p.id = this.id;
		if(this.p.treeGrid === true) {
			this.p.subGrid = false; this.p.altRows =false;
			this.p.pgbuttons = false; this.p.pginput = false;
			this.p.multiselect = false; this.p.rowList = [];
			try {
				$(this).setTreeGrid();
				this.p.treedatatype = this.p.datatype;
				$.each(this.p.treeReader,function(i,n){
					if(n){
						ts.p.colNames.push(n);
						ts.p.colModel.push({name:n,width:1,hidden:true,sortable:false,resizable:false,hidedlg:true,editable:true,search:false});
					}
				});
			} catch (_) {}
		}
		ts.p.keyIndex=false;
		for (var i=0; i<ts.p.colModel.length;i++) {
			if (ts.p.colModel[i].key===true) {
				ts.p.keyIndex = i;
				break;
			}
		}
		if(this.p.subGrid) {
			this.p.colNames.unshift("");
			this.p.colModel.unshift({name:'subgrid',width:25,sortable: false,resizable:false,hidedlg:true,search:false});
		}
		if(this.p.multiselect) {
			this.p.colNames.unshift("<input id='cb_jqg' class='cbox' type='checkbox'/>");
			this.p.colModel.unshift({name:'cb',width:27,sortable:false,resizable:false,hidedlg:true,search:false});
		}
		var	xReader = {
			root: "rows",
			row: "row",
			page: "rows>page",
			total: "rows>total",
			records : "rows>records",
			repeatitems: true,
			cell: "cell",
			id: "[id]",
			userdata: "userdata",
			subgrid: {root:"rows", row: "row", repeatitems: true, cell:"cell"}
		};
		var jReader = {
			root: "rows",
			page: "page",
			total: "total",
			records: "records",
			repeatitems: true,
			cell: "cell",
			id: "id",
			userdata: "userdata",
			subgrid: {root:"rows", repeatitems: true, cell:"cell"}
		};
		if(ts.p.scroll===true){
			ts.p.pgbuttons = false; ts.p.pginput=false; ts.p.pgtext = false; ts.p.rowList=[];
		}
		ts.p.xmlReader = $.extend(xReader, ts.p.xmlReader);
		ts.p.jsonReader = $.extend(jReader, ts.p.jsonReader);
		$.each(ts.p.colModel, function(i){this.width= IntNum(this.width,150);});
		if (ts.p.width) {setColWidth();}
		var thead = document.createElement("thead");
		var trow = document.createElement("tr");
		thead.appendChild(trow); 
		var i=0, th, idn, thdiv;
		if(ts.p.shrinkToFit===true && ts.p.forceFit===true) {
			for (i=ts.p.colModel.length-1;i>=0;i--){
				if(!ts.p.colModel[i].hidden) {
					ts.p.colModel[i].resizable=false;
					break;
				}
			}
		}
		for(i=0;i<this.p.colNames.length;i++){
			th = document.createElement("th");
			idn = ts.p.colModel[i].name;
			thdiv = document.createElement("div");
			$(thdiv).html(ts.p.colNames[i]+"&#160;");
			if (idn == ts.p.sortname) {
				var imgs = (ts.p.sortorder==='asc') ? ts.p.sortascimg : ts.p.sortdescimg;
				imgs = "<img src='"+ts.p.imgpath+imgs+"'>";
				$(thdiv).append(imgs);
				ts.p.lastsort = i;
				$(th).addClass(ts.p.sortclass);
			}
			thdiv.id = "jqgh_"+idn;
			th.appendChild(thdiv);
			trow.appendChild(th);
		}
		if(this.p.multiselect) {
			var onSA = true;
			if(typeof ts.p.onSelectAll !== 'function') {onSA=false;}
			$('#cb_jqg',trow).click(function(){
				var chk;
				if (this.checked) {
					$("[id^=jqg_]",ts.rows).attr("checked",true);
					$(ts.rows).slice(1).each(function(i) {
						if(!$(this).hasClass("subgrid")){
						$(this).addClass("selected");
						ts.p.selarrrow[i]= ts.p.selrow = this.id; 
						}
					});
					chk=true;
				}
				else {
					$("[id^=jqg_]",ts.rows).attr("checked",false);
					$(ts.rows).slice(1).each(function(i) {
						if(!$(this).hasClass("subgrid")){
							$(this).removeClass("selected");
						}
					});
					ts.p.selarrrow = []; ts.p.selrow = null;
					chk=false;
				}
				if(onSA) {ts.p.onSelectAll(ts.p.selarrrow,chk);}
			});
		}
		this.appendChild(thead);
		thead = $("thead:first",ts).get(0);
		var w, res, sort;
		$("tr:first th",thead).each(function ( j ) {
			w = ts.p.colModel[j].width;
			if(typeof ts.p.colModel[j].resizable === 'undefined') {ts.p.colModel[j].resizable = true;}
			res = document.createElement("span");
			$(res).html("&#160;");
			if(ts.p.colModel[j].resizable){
				$(this).addClass(ts.p.resizeclass);
				$(res).mousedown(function (e) {
					if(ts.p.forceFit===true) {ts.p.nv= nextVisible(j);}
					grid.dragStart(j, e.clientX);
					e.preventDefault();
					return false;
				});
			} else {res="";}
			$(this).css("width",w+"px").prepend(res);
			if( ts.p.colModel[j].hidden) {$(this).css("display","none");}
			grid.headers[j] = { width: w, el: this };
			sort = ts.p.colModel[j].sortable;
			if( typeof sort !== 'boolean') {sort =  true;}
			if(sort) { 
				$("div",this).css("cursor","pointer")
				.click(function(){sortData(this.id,j);return false;});
			}
		});
		var isMSIE = $.browser.msie ? true:false,
		isMoz = $.browser.mozilla ? true:false,
		isOpera = $.browser.opera ? true:false,
		isSafari = $.browser.safari ? true : false,
		td, ptr, gw=0,hdc=0, tbody = document.createElement("tbody");
		trow = document.createElement("tr");
		trow.id = "_empty";
		tbody.appendChild(trow);
		for(i=0;i<ts.p.colNames.length;i++){
			td = document.createElement("td");
			trow.appendChild(td);
		}
		this.appendChild(tbody);
		$("tbody tr:first td",ts).each(function(ii) {
			w = ts.p.colModel[ii].width;
			$(this).css({width:w+"px",height:"0px"});
			w +=  IntNum($(this).css("padding-left")) +
			IntNum($(this).css("padding-right"))+
			IntNum($(this).css("border-left-width"))+
			IntNum($(this).css("border-right-width"));
			if( ts.p.colModel[ii].hidden===true) {
				$(this).css("display","none");
				hdc += w;
			}
			grid.cols[ii] = this;
			gw += w;
		});
		if(isMoz) {$(trow).css({visibility:"collapse"});}
		else if( isSafari || isOpera ) {$(trow).css({display:"none"});}
		grid.width = IntNum(gw)-IntNum(hdc);
		ts.p._width = grid.width;
		grid.hTable = document.createElement("table");
		$(grid.hTable).append(thead)
		.css({width:grid.width+"px"})
		.attr({cellSpacing:"0",cellPadding:"0",border:"0"})
		.addClass("scroll grid_htable");
		grid.hDiv = document.createElement("div");
		var hg = (ts.p.caption && ts.p.hiddengrid===true) ? true : false;
		$(grid.hDiv)
			.css({ width: grid.width+"px", overflow: "hidden"})
			.prepend('<div class="loading">'+ts.p.loadtext+'</div>')
			.addClass("grid_hdiv")
			.append(grid.hTable)
			.bind("selectstart", function () { return false; });
		if(hg) {$(grid.hDiv).hide(); ts.p.gridstate = 'hidden'}
		if(ts.p.pager){
			if(typeof ts.p.pager == "string") {if(ts.p.pager.substr(0,1) !="#") ts.p.pager = "#"+ts.p.pager;}
			if( $(ts.p.pager).hasClass("scroll")) { $(ts.p.pager).css({ width: grid.width+"px", overflow: "hidden"}).show(); ts.p._height= parseInt($(ts.p.pager).height(),10); if(hg) {$(ts.p.pager).hide();}}
			setPager();
		}
		if( ts.p.cellEdit === false) {
		$(ts).mouseover(function(e) {
			td = (e.target || e.srcElement);
			ptr = $(td,ts.rows).parents("tr:first");
			if($(ptr).hasClass("jqgrow")) {
				$(ptr).addClass("over");
			}
			return false;
		}).mouseout(function(e) {
			td = (e.target || e.srcElement);
			ptr = $(td,ts.rows).parents("tr:first");
			$(ptr).removeClass("over");
			return false;
		});
		}
		var ri,ci;
		
		$(ts).before(grid.hDiv).css("width", grid.width+"px").click(function(e) {
			td = (e.target || e.srcElement);
			if (td.href) { return true; }
			var scb = $(td).hasClass("cbox");
			ptr = $(td,ts.rows).parent("tr");
			if($(ptr).length === 0 ){
				ptr = $(td,ts.rows).parents("tr:first");
				td = $(td).parents("td:first")[0];
			}
			var cSel = true;
			if(bSR) { cSel = bSR(ptr.attr("id"));}
			if(cSel === true) {
				if(ts.p.cellEdit === true) {
					if(ts.p.multiselect && scb){
						$(ts).setSelection(false,true,ptr);
					} else {
						ri = ptr[0].rowIndex;
						ci = td.cellIndex;
						try {$(ts).editCell(ri,ci,true,true);} catch (e) {}
					}
				} else if ( !ts.p.multikey ) {
					if(ts.p.multiselect && ts.p.multiboxonly) {
						if(scb){$(ts).setSelection(false,true,ptr);}
					} else {
						$(ts).setSelection(false,true,ptr);
					}
				} else {
					if(e[ts.p.multikey]) {
						$(ts).setSelection(false,true,ptr);
					} else if(ts.p.multiselect && scb) {
						scb = $("[id^=jqg_]",ptr).attr("checked");
						$("[id^=jqg_]",ptr).attr("checked",!scb);
					}
				}
				if(onSC) {
					ri = ptr[0].id;
					ci = td.cellIndex;
					onSC(ri,ci,$(td).html());
				}
			}
			e.stopPropagation();
		}).bind('reloadGrid', function(e) {
			if(ts.p.treeGrid ===true) {	ts.p.datatype = ts.p.treedatatype;}
			if(ts.p.datatype=="local"){ $(ts).resetSelection();}
			else if(!ts.p.treeGrid){
				ts.p.selrow=null;
				if(ts.p.multiselect) {ts.p.selarrrow =[];$('#cb_jqg',ts.grid.hDiv).attr("checked",false);}
				if(ts.p.cellEdit) {ts.p.savedRow = []; }
			}
			populate();
		});		
		if( ondblClickRow ) {
			$(this).dblclick(function(e) {
				td = (e.target || e.srcElement);
				ptr = $(td,ts.rows).parent("tr");
				if($(ptr).length === 0 ){
					ptr = $(td,ts.rows).parents("tr:first");
				}
				ts.p.ondblClickRow($(ptr).attr("id"));
				return false;
			});
		}
		if (onRightClickRow) {
			$(this).bind('contextmenu', function(e) {
				td = (e.target || e.srcElement);
				ptr = $(td,ts).parents("tr:first");
				if($(ptr).length === 0 ){
					ptr = $(td,ts.rows).parents("tr:first");
				}
				if(!ts.p.multiselect) {	$(ts).setSelection(false,true,ptr);	}
				ts.p.onRightClickRow($(ptr).attr("id"));
				return false;
			});
		}
		grid.bDiv = document.createElement("div");
		var ofl2 = (isNaN(ts.p.height) && isMoz && (ts.p.height.indexOf("%")!=-1 || ts.p.height=="auto")) ? "hidden" : "auto";
		$(grid.bDiv)
			.addClass("grid_bdiv")
			.scroll(function (e) {grid.scrollGrid();})
			.css({ height: ts.p.height+(isNaN(ts.p.height)?"":"px"), padding: "0px", margin: "0px", overflow: ofl2,width: (grid.width)+"px"} ).css("overflow-x","hidden")
			.append(this);
		$("table:first",grid.bDiv).css({width:grid.width+"px"});
		if( isMSIE ) {
			if( $("tbody",this).size() === 2 ) { $("tbody:first",this).remove();}
			if( ts.p.multikey) {$(grid.bDiv).bind("selectstart",function(){return false;});}
			if(ts.p.treeGrid) {$(grid.bDiv).css("position","relative");}
		} else {
			if( ts.p.multikey) {$(grid.bDiv).bind("mousedown",function(){return false;});}
		}
		if(hg) {$(grid.bDiv).hide();}
		grid.cDiv = document.createElement("div");
		$(grid.cDiv).append("<table class='Header' cellspacing='0' cellpadding='0' border='0'><tr><td class='HeaderLeft'><img src='"+ts.p.imgpath+"spacer.gif' border='0' /></td><th>"+ts.p.caption+"</th>"+ ((ts.p.hidegrid===true) ? "<td class='HeaderButton'><img src='"+ts.p.imgpath+"up.gif' border='0'/></td>" :"") +"<td class='HeaderRight'><img src='"+ts.p.imgpath+"spacer.gif' border='0' /></td></tr></table>")
		.addClass("GridHeader").width(grid.width);
		$(grid.cDiv).insertBefore(grid.hDiv);
		if( ts.p.toolbar[0] ) {
			grid.uDiv = document.createElement("div");
			if(ts.p.toolbar[1] == "top") {$(grid.uDiv).insertBefore(grid.hDiv);}
			else {$(grid.uDiv).insertAfter(grid.hDiv);}
			$(grid.uDiv).width(grid.width).addClass("userdata").attr("id","t_"+this.id);
			ts.p._height += parseInt($(grid.uDiv).height(),10);
			if(hg) {$(grid.uDiv).hide();}
		}
		if(ts.p.caption) {
			ts.p._height += parseInt($(grid.cDiv,ts).height(),10);
			var tdt = ts.p.datatype;
			if(ts.p.hidegrid===true) {
				$(".HeaderButton",grid.cDiv).toggle( function(){
					if(ts.p.pager) {$(ts.p.pager).slideUp();}
					if(ts.p.toolbar[0]) {$(grid.uDiv,ts).slideUp();}
					$(grid.bDiv).hide();
					$(grid.hDiv).slideUp();
					$("img",this).attr("src",ts.p.imgpath+"down.gif");
					ts.p.gridstate = 'hidden';
					if(onHdCl) {if(!hg) {ts.p.onHeaderClick(ts.p.gridstate);}}
					},
					function() {
					$(grid.hDiv).slideDown();
					$(grid.bDiv).show();
					if(ts.p.pager) {$(ts.p.pager).slideDown();}
					if(ts.p.toolbar[0]) {$(grid.uDiv).slideDown();}
					$("img",this).attr("src",ts.p.imgpath+"up.gif");
					if(hg) {ts.p.datatype = tdt;populate();hg=false;}
					ts.p.gridstate = 'visible';
					if(onHdCl) {ts.p.onHeaderClick(ts.p.gridstate)}
					}
				);
				if(hg) { $(".HeaderButton",grid.cDiv).trigger("click"); ts.p.datatype="local";}
			}
		} else {$(grid.cDiv).hide();}
		ts.p._height += parseInt($(grid.hDiv,ts).height(),10);
		$(grid.hDiv).mousemove(function (e) {grid.dragMove(e.clientX); return false;}).after(grid.bDiv);
		$(document).mouseup(function (e) {
			if(grid.resizing) {
				grid.dragEnd();
				if(grid.newWidth && ts.p.forceFit===false){
					var gwdt = (grid.width <= ts.p._width) ? grid.width: ts.p._width;
					var overfl = (grid.width <= ts.p._width) ? "hidden" : "auto";
					if(ts.p.pager && $(ts.p.pager).hasClass("scroll") ) {
						$(ts.p.pager).width(gwdt);
					}
					if(ts.p.caption) {$(grid.cDiv).width(gwdt);}
					if(ts.p.toolbar[0]) {$(grid.uDiv).width(gwdt);}
					$(grid.bDiv).width(gwdt).css("overflow-x",overfl);
					$(grid.hDiv).width(gwdt);
				}
				return false;
			}
			return true;
		});
		ts.formatCol = function(a,b) {formatCol(a,b);};
		ts.sortData = function(a,b,c){sortData(a,b,c);};
		ts.updatepager = function(){updatepager();};
		ts.formatter = function (elem, row, cellval , colpos, act){formatter(elem, row, cellval , colpos,act);};
		$.extend(grid,{populate : function(){populate();}});
		this.grid = grid;
		ts.addXmlData = function(d) {addXmlData(d,ts.grid.bDiv);};
		ts.addJSONData = function(d) {addJSONData(d,ts.grid.bDiv);};
		populate();
		if (!ts.p.shrinkToFit) {
			ts.p.forceFit = false;
			$("tr:first th", thead).each(function(j){
				var w = ts.p.colModel[j].owidth;
				var diff = w - ts.p.colModel[j].width;
				if (diff > 0 && !ts.p.colModel[j].hidden) {
					grid.headers[j].width = w;
					$(this).add(grid.cols[j]).width(w);
					$('table:first',grid.bDiv).add(grid.hTable).width(ts.grid.width);
					ts.grid.width += diff;
					grid.hDiv.scrollLeft = grid.bDiv.scrollLeft;
				}
			});
			ofl2 = (grid.width <= ts.p._width) ? "hidden" : "auto";
			$(grid.bDiv).css({"overflow-x":ofl2});
		}
		$(window).unload(function () {
			$(this).unbind("*");
			this.grid = null;
			this.p = null;
		});
	});
};
})(jQuery);

⌨️ 快捷键说明

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