【发布时间】:2012-09-26 18:15:23
【问题描述】:
我有一个启用了网格级“可排序”选项的 jqGrid。这让我可以拖动列来重新排列它们,这很棒。但我想阻止用户对一个特定的列执行此操作,而其他列不受影响。这可能吗?
【问题讨论】:
-
哦,我想我在这里找到了它:stackoverflow.com/questions/2317199/…
标签: jqgrid
我有一个启用了网格级“可排序”选项的 jqGrid。这让我可以拖动列来重新排列它们,这很棒。但我想阻止用户对一个特定的列执行此操作,而其他列不受影响。这可能吗?
【问题讨论】:
标签: jqgrid
我觉得你的问题很有趣,所以我做了the corresponding demo 来演示解决方案。在演示中,第一列“日期”无法排序。
我建议您阅读有关关闭主题的另外两个旧答案:this 和 this。我的建议是基于同样的想法。
如果使用 jqGrid 的 sortable: true 选项,将在内部使用 jqGrid 内部方法 sortableColumns。 sortableColumns 方法使用 jQuery Sortable 来实现并将具有id="list" 的网格的items 选项初始化为值">th:not(:has(#jqgh_list_cb,#jqgh_list_rn,#jqgh_list_subgrid),:hidden)" .它使列"cb"、"rn" 和"subgrid" 无法排序。如果您使用 jqGrid 选项 multiselect: true、rownumbers: true 或 subGrid: true,则可以在网格中插入列。同样,如果您拥有带有name: "invdate" 的列,那么列元素的相应ID 将为jqgh_list_invdate。因此可以使用sortable 选项,如下所示
sortable: {
options: {
items: ">th:not(:has(#jqgh_list_cb,#jqgh_list_invdate,#jqgh_list_rn,#jqgh_list_subgrid),:hidden)"
}
}
使"invdate" 列不可排序。
【讨论】: