回答
问题是,目前实施的setFrozenColumns
有一些限制。对于冷冻柱,但是setFrozenColumns
,不允许编辑(在任何编辑模式下)和sortable: true
。此外sortable: true
应该不允许使用冻结列的标题。另一方面,setFrozenColumns
包含一些参数的简单测试(见here),如果设置了一些这样的参数(如cellEdit
或sortable
),该方法将不起作用。
我在the post(与the demo)中建议如何实施解决方法。方法是修改the answer和this one的方法。
我觉得你的问题很有趣,所以我创建了the demo,它演示了一个人如何实现你的需求。它显示的结果如下(gif动画):
它主要使用如下代码
// create the grid
$grid.jqGrid({
...
});
$grid.bind("jqGridLoadComplete jqGridInlineEditRow jqGridAfterEditCell jqGridAfterRestoreCell jqGridInlineAfterRestoreRow jqGridAfterSaveCell jqGridInlineAfterSaveRow", function() {
fixPositionsOfFrozenDivs.call(this);
});
$grid.jqGrid("setGridParam", {cellEdit: false, sortable: false});
$grid.jqGrid("setFrozenColumns");
$grid.jqGrid("setGridParam", {cellEdit: true, sortable: true});
fixPositionsOfFrozenDivs.call($grid[0]);
try {
var p = $grid.jqGrid("getGridParam"), tid = $.jgrid.jqID(p.id), colModel = p.colModel, i, n = colModel.length, cm,
skipIds = [];
for (i = 0; i < n; i++) {
cm = colModel[i];
if ($.inArray(cm.name, ["cb", "rn", "subgrid"]) >=0 || cm.frozen) {
skipIds.push("#jqgh_" + tid + "_" + $.jgrid.jqID(cm.name));
}
}
$grid.jqGrid("setGridParam", {sortable: {options: {
items: skipIds.length > 0 ? ">th:not(:has(" + skipIds.join(",") + "),:hidden)" : ">th:not(:hidden)"
}}});
$grid.jqGrid("sortableColumns", $($grid[0].grid.hDiv).find(".ui-jqgrid-labels"));
} catch (e) {}
@ Oleg-非常感谢你。当谈到jqgrid时,我是新手,我发现很多你的帖子非常有用。仍在努力充分利用它。我无法关联您的答案中提到的bDiv,cDiv,hDiv,fbDiv,fhDiv,uDiv等项目。尝试根据jqgrid加载条件启用/禁用行,在jqgrid加载时根据条件再次启用/禁用列,基于条件的行单元格编辑,即使对于冻结列添加具有值的新行,全部在相同的jqgrid。要让你张贴。再次感谢! – user3759787 2015-02-12 11:32:09
@ user3759787:不客气!您是否尝试过使用开发人员工具调试我的演示(在Web浏览器中按F12启动)。如果你在网格创建后的某处设置了断点,你会看到'$ grid [0]'('$(“#list”)[0]')具有'hDiv','bDiv'和' 。 jqGrid创建并填充'grid'属性。我无法一次回答所有问题,但如果需要,您可以提出新问题。如果现在的问题现在已经解决,你应该[“接受”](http://meta.stackexchange.com/a/5235/147495)答案。 – Oleg 2015-02-12 11:53:59
请试试这个,简单的解决方案,
隐藏或删除cellEdit: true
然后在setFrozenColumns的上面和下面添加以下几行
以前的代码:
$("#jqGrid2").jqGrid('setFrozenColumns');
新代码:
$("#jqGrid2").jqGrid("setGridParam", {cellEdit: false, sortable: false});
$("#jqGrid2").jqGrid('setFrozenColumns');
$("#jqGrid2").jqGrid("setGridParam", {cellEdit: true, sortable: true});
- 1. 编辑单元格后,UITableView单元格被重新排序
- 2. jqGrid的列重新排序
- 3. jqGrid列重新排序
- 4. 重新排序表格单元格
- 5. CKEditor冻结在jQuery UI重新排序
- 6. 重新排序PFQueryTableView中的单元格?
- 7. 重新排序行单元格
- 8. 重新排列数据库时重新排序UitableView单元
- 9. 的jqGrid与重新排序列
- 10. jqGrid拖放列重新排序
- 11. Jqgrid排序列
- 12. GWT网格 - 立即重新排序和多列排序
- 13. 基于UITableView重新排序NSArray编辑
- 14. 的jqGrid排序列
- 15. 可编辑的网格支持与行编辑/排序/重新排序的XML数据存储
- 16. 重新排序列
- 17. jqGrid排序选项允许用户对网格进行排序还是允许列重新排序?
- 18. UICollectionview重新排列图像单元格
- 19. 重新排列列表元素 - 序言
- 20. 在非编辑模式下重新排序tableView中的行
- 21. Gridview排序,更新和编辑
- 22. 排序结果由单元格的值
- 23. JTable日期列排序冻结
- 24. jQuery - 如何重新排序表单元素和表格行
- 25. 排序和重新排列数组元素
- 26. jqGrid单元格编辑 - 双击编辑?
- 27. Symfony表单 - 重新排序/排序CollectionType元素
- 28. 基于排序列和另一列值重新排序表
- 29. ListGrid禁用领域下拉排序,冻结,编辑
- 30. JqGrid在单元格编辑后重新加载网格
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:frozencolumns – Runcorn 2015-02-10 07:20:43
你需要编辑一些冻结的列或只有没有'frozen:true'属性的列? – Oleg 2015-02-10 10:56:45
@Oleg - 我只需要编辑非冻结列,但这些非冻结列需要重新排序或显示/隐藏。 – user3759787 2015-02-11 04:48:53