JQGrid – 冷冻柱 – 冷冻柱到网格的右端
是否可以将最后一列冻结到网格的右侧?
我遇到的所有演示都显示将第1或第1和第2列冻结到网格的左侧。
我尝试使用frozen:true
属性只在colModel中的最后一列,但它不起作用。
jqGrid中当前冻结列的实现不允许将最后一列冻结到网格的右侧。 所以我没有看到任何简单的方法在jqGrid中实现您的需求。
复杂性的原因在于jqGrid中冻结列的实现。 方法setFrozenColumns
检查colModel
(来自colModel
数组的第一个索引)(参见源代码部分 )。 它找到已frozen: true
的colModel
的最大索引frozen: true
属性,然后在单独的div中创建网格列的副本 。 换句话说,jqGrid 仅考虑colModel
第一列,它们具有frozen: true
属性 。 frozen: true
所有其他属性frozen: true
将被忽略。 然后jqGrid始终只创建左冻结列的div 。 因此,未提供网格右侧的冻结列的使用。
您看到所有演示仅冻结左侧列,因为jqGrid无法冻结右侧列或不相邻的列(尝试冻结列1和3而不是2,这将仅冻结第1列类似地,冻结第1,2和4列而不是第3列将仅冻结第1列和第2列。
在jqGrid的代码片段下面,它强制执行这样的规则(引用带有from left, no breaking frozen
注释的循环from left, no breaking frozen
)。 如果您认真考虑允许冻结右侧列,您可以尝试根据您的要求修改jqGrid代码。
setFrozenColumns : function () { return this.each(function() { if ( !this.grid ) {return;} var $t = this, cm = $tpcolModel,i=0, len = cm.length, maxfrozen = -1, frozen= false; // TODO treeGrid and grouping Support if($tpsubGrid === true || $tptreeGrid === true || $tpcellEdit === true || $tpsortable || $tpscroll ) { return; } if($tprownumbers) { i++; } if($tpmultiselect) { i++; } // get the max index of frozen col while(i