?? grid.base.js
字號:
;(function ($) {
/*
* jqGrid 3.4.3 - jQuery Grid
* Copyright (c) 2008, Tony Tomov, tony@trirand.com
* Dual licensed under the MIT and GPL licenses
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
* Date: 2009-03-12 rev 84
*/
$.fn.jqGrid = function( p ) {
p = $.extend(true,{
url: "",
height: 150,
page: 1,
rowNum: 20,
records: 0,
pager: "",
pgbuttons: true,
pginput: true,
colModel: [],
rowList: [],
colNames: [],
sortorder: "asc",
sortname: "",
datatype: "xml",
mtype: "GET",
//imgpath: "",
imgpath: _MISC_DIR + "jqGrid-v3.4.3/themes/steel/images",
sortascimg: "sort_asc.gif",
sortdescimg: "sort_desc.gif",
firstimg: "first.gif",
previmg: "prev.gif",
nextimg: "next.gif",
lastimg: "last.gif",
altRows: true,
selarrrow: [],
savedRow: [],
shrinkToFit: true,
xmlReader: {},
jsonReader: {},
subGrid: false,
subGridModel :[],
lastpage: 0,
lastsort: 0,
selrow: null,
beforeSelectRow: null,
onSelectRow: null,
onSortCol: null,
ondblClickRow: null,
onRightClickRow: null,
onPaging: null,
onSelectAll: null,
loadComplete: null,
gridComplete: null,
loadError: null,
loadBeforeSend: null,
afterInsertRow: null,
beforeRequest: null,
onHeaderClick: null,
viewrecords: false,
loadonce: false,
multiselect: false,
multikey: false,
editurl: null,
search: false,
searchdata: {},
caption: "",
hidegrid: true,
hiddengrid: false,
postData: {},
userData: {},
treeGrid : false,
treeGridModel : 'nested',
treeReader : {},
treeANode : 0,
ExpandColumn: null,
tree_root_level : 0,
prmNames: {page:"page",rows:"rows", sort: "sidx",order: "sord"},
sortclass: "grid_sort",
resizeclass: "grid_resize",
forceFit : false,
gridstate : "visible",
cellEdit: false,
cellsubmit: "remote",
nv:0,
loadui: "enable",
toolbar: [false,""],
scroll: false,
multiboxonly : false,
scrollrows : false,
deselectAfterSort: true
}, $.jgrid.defaults, p || {});
var grid={
headers:[],
cols:[],
dragStart: function(i,x) {
this.resizing = { idx: i, startX: x};
this.hDiv.style.cursor = "e-resize";
},
dragMove: function(x) {
if(this.resizing) {
var diff = x-this.resizing.startX,
h = this.headers[this.resizing.idx],
newWidth = h.width + diff, hn, nWn;
if(newWidth > 25) {
if(p.forceFit===true ){
hn = this.headers[this.resizing.idx+p.nv];
nWn = hn.width - diff;
if(nWn >25) {
h.el.style.width = newWidth+"px";
h.newWidth = newWidth;
this.cols[this.resizing.idx].style.width = newWidth+"px";
hn.el.style.width = nWn +"px";
hn.newWidth = nWn;
this.cols[this.resizing.idx+p.nv].style.width = nWn+"px";
this.newWidth = this.width;
}
} else {
h.el.style.width = newWidth+"px";
h.newWidth = newWidth;
this.cols[this.resizing.idx].style.width = newWidth+"px";
this.newWidth = this.width+diff;
$('table:first',this.bDiv).css("width",this.newWidth +"px");
$('table:first',this.hDiv).css("width",this.newWidth +"px");
this.hDiv.scrollLeft = this.bDiv.scrollLeft;
}
}
}
},
dragEnd: function() {
this.hDiv.style.cursor = "default";
if(this.resizing) {
var idx = this.resizing.idx;
this.headers[idx].width = this.headers[idx].newWidth || this.headers[idx].width;
this.cols[idx].style.width = this.headers[idx].newWidth || this.headers[idx].width;
// here code to set the width in colmodel
if(p.forceFit===true){
this.headers[idx+p.nv].width = this.headers[idx+p.nv].newWidth || this.headers[idx+p.nv].width;
this.cols[idx+p.nv].style.width = this.headers[idx+p.nv].newWidth || this.headers[idx+p.nv].width;
}
if(this.newWidth) {this.width = this.newWidth;}
this.resizing = false;
}
},
scrollGrid: function() {
if(p.scroll === true) {
var scrollTop = this.bDiv.scrollTop;
if (scrollTop != this.scrollTop) {
this.scrollTop = scrollTop;
if ((this.bDiv.scrollHeight-scrollTop-$(this.bDiv).height()) <= 0) {
if(parseInt(p.page,10)+1<=parseInt(p.lastpage,10)) {
p.page = parseInt(p.page,10)+1;
this.populate();
}
}
}
}
this.hDiv.scrollLeft = this.bDiv.scrollLeft;
}
};
$.fn.getGridParam = function(pName) {
var $t = this[0];
if (!$t.grid) {return;}
if (!pName) { return $t.p; }
else {return $t.p[pName] ? $t.p[pName] : null;}
};
$.fn.setGridParam = function (newParams){
return this.each(function(){
if (this.grid && typeof(newParams) === 'object') {$.extend(true,this.p,newParams);}
});
};
$.fn.getDataIDs = function () {
var ids=[];
this.each(function(){
$(this.rows).slice(1).each(function(i){
ids[i]=this.id;
});
});
return ids;
};
$.fn.setSortName = function (newsort) {
return this.each(function(){
var $t = this;
for(var i=0;i< $t.p.colModel.length;i++){
if($t.p.colModel[i].name===newsort || $t.p.colModel[i].index===newsort){
$("tr th:eq("+$t.p.lastsort+") div img",$t.grid.hDiv).remove();
$t.p.lastsort = i;
$t.p.sortname=newsort;
break;
}
}
});
};
$.fn.setSelection = function(selection,onsr,sd) {
return this.each(function(){
var $t = this, stat,pt, ind;
onsr = onsr === false ? false : true;
if(selection===false) {pt = sd;}
else { ind = $($t).getInd($t.rows,selection); pt=$($t.rows[ind]);}
selection = $(pt).attr("id");
if (!pt.html()) {return;}
if($t.p.selrow && $t.p.scrollrows===true) {
var olr = $($t).getInd($t.rows,$t.p.selrow);
var ner = $($t).getInd($t.rows,selection);
if(ner >=0 ){
if(ner > olr ) {
scrGrid(ner,'d');
} else {
scrGrid(ner,'u');
}
}
}
if(!$t.p.multiselect) {
if($(pt).attr("class") !== "subgrid") {
if( $t.p.selrow ) {$("tr#"+$t.p.selrow.replace(".", "\\."),$t.grid.bDiv).removeClass("selected");}
$t.p.selrow = selection;
$(pt).addClass("selected");
if( $t.p.onSelectRow && onsr) { $t.p.onSelectRow($t.p.selrow, true); }
}
} else {
$t.p.selrow = selection;
var ia = $.inArray($t.p.selrow,$t.p.selarrrow);
if ( ia === -1 ){
if($(pt).attr("class") !== "subgrid") { $(pt).addClass("selected");}
stat = true;
$("#jqg_"+$t.p.selrow.replace(".", "\\.") ,$t.rows).attr("checked",stat);
$t.p.selarrrow.push($t.p.selrow);
if( $t.p.onSelectRow && onsr) { $t.p.onSelectRow($t.p.selrow, stat); }
} else {
if($(pt).attr("class") !== "subgrid") { $(pt).removeClass("selected");}
stat = false;
$("#jqg_"+$t.p.selrow.replace(".", "\\.") ,$t.rows).attr("checked",stat);
$t.p.selarrrow.splice(ia,1);
if( $t.p.onSelectRow && onsr) { $t.p.onSelectRow($t.p.selrow, stat); }
var tpsr = $t.p.selarrrow[0];
$t.p.selrow = (tpsr==undefined) ? null : tpsr;
}
}
function scrGrid(iR,tp){
var ch = $($t.grid.bDiv)[0].clientHeight,
st = $($t.grid.bDiv)[0].scrollTop,
nROT = $t.rows[iR].offsetTop+$t.rows[iR].clientHeight,
pROT = $t.rows[iR].offsetTop;
if(tp == 'd') {
if(nROT >= ch) { $($t.grid.bDiv)[0].scrollTop = st + nROT-pROT; }
}
if(tp == 'u'){
if (pROT < st) { $($t.grid.bDiv)[0].scrollTop = st - nROT+pROT; }
}
}
});
};
$.fn.resetSelection = function(){
return this.each(function(){
var t = this, ind;
if(!t.p.multiselect) {
if(t.p.selrow) {
$("tr#"+t.p.selrow.replace(".", "\\."),t.grid.bDiv).removeClass("selected");
t.p.selrow = null;
}
} else {
$(t.p.selarrrow).each(function(i,n){
ind = $(t).getInd(t.rows,n);
$(t.rows[ind]).removeClass("selected");
$("#jqg_"+n.replace(".", "\\."),t.rows[ind]).attr("checked",false);
});
$("#cb_jqg",t.grid.hDiv).attr("checked",false);
t.p.selarrrow = [];
}
});
};
$.fn.getRowData = function( rowid ) {
var res = {};
if (rowid){
this.each(function(){
var $t = this,nm,ind;
ind = $($t).getInd($t.rows,rowid);
if (!ind) {return res;}
$('td',$t.rows[ind]).each( function(i) {
nm = $t.p.colModel[i].name;
if ( nm !== 'cb' && nm !== 'subgrid') {
if($t.p.treeGrid===true && nm == $t.p.ExpandColumn) {
res[nm] = $.htmlDecode($("span:first",this).html());
} else {
res[nm] = $.htmlDecode($(this).html());
}
}
});
});
}
return res;
};
$.fn.delRowData = function(rowid) {
var success = false, rowInd, ia;
if(rowid) {
this.each(function() {
var $t = this;
rowInd = $($t).getInd($t.rows,rowid);
if(!rowInd) {return false;}
else {
$($t.rows[rowInd]).remove();
$t.p.records--;
$t.updatepager();
success=true;
if(rowid == $t.p.selrow) {$t.p.selrow=null;}
ia = $.inArray(rowid,$t.p.selarrrow);
if(ia != -1) {$t.p.selarrrow.splice(ia,1);}
}
if(rowInd == 1 && success && ($.browser.opera || $.browser.safari)) {
$($t.rows[1]).each( function( k ) {
$(this).css("width",$t.grid.headers[k].width+"px");
$t.grid.cols[k] = this;
});
}
if( $t.p.altRows === true && success) {
$($t.rows).slice(1).each(function(i){
if(i % 2 ==1) {$(this).addClass('alt');}
else {$(this).removeClass('alt');}
});
}
});
}
return success;
};
$.fn.setRowData = function(rowid, data) {
var nm, success=false;
this.each(function(){
var t = this, vl, ind, ttd;
if(!t.grid) {return false;}
if( data ) {
ind = $(t).getInd(t.rows,rowid);
if(!ind) {return false;}
success=true;
$(this.p.colModel).each(function(i){
nm = this.name;
vl = data[nm];
if( vl !== undefined ) {
if(t.p.treeGrid===true && nm == t.p.ExpandColumn) {
ttd = $("td:eq("+i+") > span:first",t.rows[ind]);
} else {
ttd = $("td:eq("+i+")",t.rows[ind]);
}
t.formatter(ttd, t.rows[ind], vl, i, 'edit');
success = true;
}
});
}
});
return success;
};
$.fn.addRowData = function(rowid,data,pos,src) {
if(!pos) {pos = "last";}
var success = false, nm, row, td, gi=0, si=0,sind, i;
if(data) {
this.each(function() {
var t = this;
row = document.createElement("tr");
row.id = rowid || t.p.records+1;
$(row).addClass("jqgrow");
if(t.p.multiselect) {
td = $('<td></td>');
$(td[0],t.grid.bDiv).html("<input type='checkbox'"+" id='jqg_"+rowid+"' class='cbox'/>");
row.appendChild(td[0]);
gi = 1;
}
if(t.p.subGrid ) { try {$(t).addSubGrid(t.grid.bDiv,row,gi);} catch(e){} si=1;}
for(i = gi+si; i < this.p.colModel.length;i++){
nm = this.p.colModel[i].name;
td = $('<td></td>');
t.formatter(td, row, data[nm], i, 'add');
t.formatCol($(td[0],t.grid.bDiv),i);
row.appendChild(td[0]);
}
switch (pos) {
case 'last':
$(t.rows[t.rows.length-1]).after(row);
break;
case 'first':
$(t.rows[0]).after(row);
break;
case 'after':
sind = $(t).getInd(t.rows,src);
sind >= 0 ? $(t.rows[sind]).after(row): "";
break;
case 'before':
sind = $(t).getInd(t.rows,src);
sind > 0 ? $(t.rows[sind-1]).after(row): "";
break;
}
t.p.records++;
if($.browser.safari || $.browser.opera) {
t.scrollLeft = t.scrollLeft;
$("td",t.rows[1]).each( function( k ) {
$(this).css("width",t.grid.headers[k].width+"px");
t.grid.cols[k] = this;
});
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -