是否可以将最后一列冻结到网格的右侧?
我遇到的所有演示都显示了第一或第一个和第一个第二列到网格的左侧。
我尝试使用frozen:true
属性仅在colModel中的最后一列,但它不起作用。
答案 0 :(得分:3)
jqGrid中当前冻结列的实现不允许将最后一列冻结到网格的右侧。因此,我没有看到在jqGrid中实现您的需求的任何简单方法。
复杂性的原因在于jqGrid中冻结列的实现。方法setFrozenColumns
从左侧检查colModel
(来自colModel
数组的第一个索引)(请参阅源代码的the part)码)。它找到具有colModel
属性的frozen: true
的最大索引,然后在单独的div中对网格的列进行复制。换句话说,jqGrid仅考虑的colModel
的第一列frozen: true
属性。具有frozen: true
的所有其他属性将被忽略。然后jqGrid始终使用左侧冻结列 创建 div。因此,未提供网格右侧的冻结列的使用。
答案 1 :(得分:1)
您看到所有演示仅冻结左侧列,因为jqGrid无法冻结右侧列或不相邻的列(尝试冻结列1和3但不是2,这将冻结类似地冻结第1,2和4列而不是第3列将仅冻结第1列和第2列。
在jqGrid的代码片段下面,它强加了这样的规则(引用带有注释from left, no breaking frozen
的循环)。如果您认真考虑允许冻结右侧列,您可以尝试根据您的要求修改jqGrid代码。
setFrozenColumns : function () {
return this.each(function() {
if ( !this.grid ) {return;}
var $t = this, cm = $t.p.colModel,i=0, len = cm.length, maxfrozen = -1, frozen= false;
// 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.rownumbers) { i++; }
if($t.p.multiselect) { i++; }
// get the max index of frozen col
while(i<len)
{
// from left, no breaking frozen
if(cm[i].frozen === true)
{
frozen = true;
maxfrozen = i;
} else {
break;
}
i++;
}