📄 grid.base.js
字号:
}
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]+" ");
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(" ");
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 + -