jqgrid冻结列3步设置:
cellEdit=true的时候frozencolumn是无效
第一步设置colModel 列内的 frozen: true;
第二步设置表格初始时宽度 shrinkToFit: false,
第三步在最后设置 jQuery("#table").jqGrid(‘setFrozenColumns’);冻结前列
或
第三步在最后设置 jQuery("#table").jqGrid(‘setTableFrozenColumns’);冻结前后列
var _colmodel=[ {name:"id",index:"id", width:80,hidden:true,frozen : true,tfixed: 'left'},//冻结列,从第一列开始frozen : true,tfixed: 'left'
{name:"operate",index:"operate",frozen : true,tfixed: 'right',}];//冻结列,从最后一列开始frozen : true,tfixed: 'right'
demo
在源码里添加方法setTableFrozenColumns
setTableFrozenColumns : function () {
return this.each(function() {
if ( !this.grid ) {
return;}
var $t = this, cm = $t.p.colModel,i=0,l=0, len = cm.length, maxfrozen = -1,maxleftfrozen = 0, maxrightfrozen = 0, frozen= false,leftarr=[],rightarr=[];
// TODO treeGrid and grouping Support
if($t.p.subGrid === true || $t.p.treeGrid === true || $t.p.cellEdit === true || $t.p.sortable || $t.p.scroll )
{
return;
}
if($t.p.multiselect) {
i++;}
if($t.p.rownumbers) {
i++;}
for (var l=0;l<len;l++ ) {
if (cm[l].frozen === true && cm[l].tfixed === 'left') {
maxleftfrozen =i;
maxleftfrozen ++;
frozen = true;
}
if (cm[l].frozen === true && cm[l].tfixed === 'right') {
maxrightfrozen =l - 1;
maxrightfrozen ++;
frozen = true;
}
}
// get the max index of frozen
while(i<len)
{
// from left, no breaking frozen
if(cm[i].frozen === true)
{
frozen = true;
maxfrozen = i;
} else {
break;
}
i++;
}
if( maxfrozen>=0 && frozen) {
var top = $t.p.caption ? $($t.grid.cDiv).outerHeight() : 0,
hth = $(".ui-jqgrid-htable","#gview_"+$.jgrid.jqID($t.p.id)).height();
//headers
if($t.p.toppager) {
top = top + $($t.grid.topDiv).outerHeight();
}
if($t.p.toolbar[0] === true) {
if($t.p.toolbar[1] !== "bottom") {
top = top + $($t.grid.uDiv).outerHeight();
}
}
//top:'+top+'px;
$t.grid.leftfhDiv = $('<div style="position:absolute;left:0px;top:1px; " class="frozen-div ui-state-default ui-jqgrid-hdiv left-frozen-hdiv"></div>');
$t.grid.leftfbDiv = $('<div style="position:absolute;left:0px;top:'+(parseInt(top,10)+parseInt(hth,10))+'px;overflow-y:hidden; z-index: 11;background-color: #fff;" class="frozen-bdiv ui-jqgrid-bdiv left-frozen-bdiv"></div>');
$t.grid.rightfhDiv = $('<div style="position:absolute;right:0px;top:0px; " class="frozen-div ui-state-default ui-jqgrid-hdiv right-frozen-hdiv"></div>');
$t.grid.rightfbDiv = $('<div style="position:absolute;right:0px;top:'+(parseInt(top,10)+parseInt(hth,10))+'px;overflow-y:hidden; z-index: 11;background-color: #fff;" class="frozen-bdiv ui-jqgrid-bdiv right-frozen-bdiv"></div>');
$("#gview_"+$.jgrid.jqID($t.p.id)).append($t.grid.leftfhDiv);
$("#gview_"+$.jgrid.jqID($t.p.id)).append($t.grid.rightfhDiv);
var lefthtbl = $(".ui-jqgrid-htable","#gview_"+$.jgrid.jqID($t.p.id)).clone(true);
var righthtbl = $(".ui-jqgrid-htable","#gview_"+$.jgrid.jqID($t.p.id)).clone(true);
// groupheader support - only if useColSpanstyle is false
if($t.p.groupHeader) {
$("tr.jqg-first-row-header, tr.jqg-third-row-header", lefthtbl).each(function(){
$("th:gt("+maxfrozen+")",this).remove();
});
var swapfroz = -1, fdel = -1, cs, rs;
$("tr.jqg-second-row-header th", lefthtbl).each(