【发布时间】:2010-03-13 19:40:07
【问题描述】:
我只需要根据用户从选项列表中的选择动态重命名 JQgrid 列。我该怎么做?
【问题讨论】:
标签: jqgrid
我只需要根据用户从选项列表中的选择动态重命名 JQgrid 列。我该怎么做?
【问题讨论】:
标签: jqgrid
您可以使用以下语法:
jQuery("#grid1").jqGrid('setLabel', 0, 'NewLabel');
这会将网格中的第一列名称更改为 NewLabel,id=grid1。
【讨论】:
最新版本的 jqGrid(4.1+ - 可能更早)似乎不再支持 Galichev 描述的基于列索引的 setLabel 方法,而是提供了基于 columnName 的方法:
jQuery("#grid1").jqGrid('setLabel', 'columnName', 'NewLabel');
请参阅jqGrid Methods wiki 了解更多信息。
我没有编辑之前的答案,因为这种方法可能在 4.1 之前的版本中有效。
【讨论】:
根据jqGrid Documentation,colNames在网格创建后无法更改。
但是,您可以通过使用多个列来模拟列名更改。然后,您可以隐藏所有这些,除了将向用户显示的单个。当用户选择另一个时,只需交换所选列。例如,如果有效列是 [A, B, C, D],您可能首先只显示 A。然后如果用户选择 C,隐藏 A 并显示 C。这种方法的主要缺点是您需要复制但是,许多列的相同数据。
更新
根据 Galichev 的回答,您可以使用 setLabel 方法重命名列标题。
【讨论】:
*setLabel : * colname 列名(该参数可以是从0开始的数字(列的索引)
但是索引参数不适用于 4.1 及更高版本。
$(tableId).jqgrid("setLabel", 0, "BBBBB");
尝试使用这些
$(tableId).setLabel("ColumnName", "AAAAA");
或
$(tableId).jqgrid("setLabel", "ColumnName", "BBBBB");
【讨论】:
JQGrid1.Columns.FromDataField(ColumnName).HeaderText = ColumnName;
【讨论】:
我给我的列名指定了一个 div
'<div id="DateDivId">Date</div>'
那我就按正常方式改了,getElementById,改内容。
【讨论】: