【问题标题】:changing JQgrid column name dynamically动态更改 JQgrid 列名
【发布时间】:2010-03-13 19:40:07
【问题描述】:

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

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    您可以使用以下语法:

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

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

    【讨论】:

      【解决方案2】:

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

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

      请参阅jqGrid Methods wiki 了解更多信息。

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

      【讨论】:

        【解决方案3】:

        根据jqGrid DocumentationcolNames在网格创建后无法更改。

        但是,您可以通过使用多个列来模拟列名更改。然后,您可以隐藏所有这些,除了将向用户显示的单个。当用户选择另一个时,只需交换所选列。例如,如果有效列是 [A, B, C, D],您可能首先只显示 A。然后如果用户选择 C,隐藏 A 并显示 C。这种方法的主要缺点是您需要复制但是,许多列的相同数据。

        更新

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

        【讨论】:

          【解决方案4】:

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

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

          Jqgrid uptop 4.0版

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

          jqgrid 4.1及以上版本

          尝试使用这些

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

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

          【讨论】:

            【解决方案5】:
            JQGrid1.Columns.FromDataField(ColumnName).HeaderText = ColumnName;
            

            【讨论】:

              【解决方案6】:

              我给我的列名指定了一个 div

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

              那我就按正常方式改了,getElementById,改内容。

              【讨论】:

                猜你喜欢
                • 2012-08-23
                • 1970-01-01
                • 1970-01-01
                • 2018-01-09
                • 2013-04-17
                • 1970-01-01
                • 2013-03-14
                • 2018-06-05
                • 2023-04-01
                相关资源
                最近更新 更多