动态更改JQgrid列名称

时间:2010-03-13 19:40:08

标签: jqgrid

我只需要根据用户选择从选项列表中动态重命名JQgrid列。我怎么能这样做?

6 个答案:

答案 0 :(得分:16)

您可以使用以下语法:

jQuery("#grid1").jqGrid('setLabel', 0, 'NewLabel');

这将使用id = grid1将第一列名称更改为网格中的NewLabel。

答案 1 :(得分:11)

最新版本的jqGrid(4.1+ - 可能更早)似乎不再支持Galichev描述的基于列索引的setLabel方法,而是提供了基于columnName的方法:

jQuery("#grid1").jqGrid('setLabel', 'columnName', 'NewLabel');

有关详细信息,请参阅jqGrid Methods wiki

我之前的答案未经编辑,因为这种方法在4.1之前的版本中可能有效。

答案 2 :(得分:5)

根据jqGrid Documentation,创建网格后无法更改colNames

但是,您可以使用多个列来模拟列名更改。然后你可以隐藏所有这些,除了将向用户显示的单个。当用户选择另一个时,只需交换选定的列。例如,如果有效列为[A,B,C,D],则可以从仅显示A开始。然后,如果用户选择C,则隐藏A并显示C.此方法的主要缺点是您需要复制但是,相同的数据到很多列。

更新

根据Galichev的回答,您可以使用setLabel方法重命名列标题。

答案 3 :(得分:2)

* setLabel:* colname列的名称(此参数可以是从0开始的数字(列的索引)

但是索引参数不适用于4.1及更高版本。

Jqgrid uptop version 4.0

 $(tableId).jqgrid("setLabel", 0, "BBBBB");

Jqgrid 4.1及以上版本

尝试使用这些

  $(tableId).setLabel("ColumnName", "AAAAA");

  $(tableId).jqgrid("setLabel", "ColumnName", "BBBBB");

答案 4 :(得分:1)

JQGrid1.Columns.FromDataField(ColumnName).HeaderText = ColumnName;

答案 5 :(得分:0)

我给我的列名称为div

'<div id="DateDivId">Date</div>'

然后我按正常方式更改了它,getElementById,更改内容。