JQGrid – 冷冻柱 – 冷冻柱到网格的右端

是否可以将最后一列冻结到网格的右侧?

我遇到的所有演示都显示将第1或第1和第2列冻结到网格的左侧。

我尝试使用frozen:true属性只在colModel中的最后一列,但它不起作用。

jqGrid中当前冻结列的实现不允许将最后一列冻结到网格的右侧。 所以我没有看到任何简单的方法在jqGrid中实现您的需求。

复杂性的原因在于jqGrid中冻结列的实现。 方法setFrozenColumns检查colModel (来自colModel数组的第一个索引)(参见源代码部分 )。 它找到已frozen: truecolModel的最大索引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 
Interesting Posts