如何更改 jqgrid 中弹出的列选择器中的列名称?

2024-01-30

我有一个两列标题 Phase1 和 Phase 2(图像 1)。现在在列选择器窗口中显示列名称(图 2)

  1. Name
  2. 类别
  3. 子类别
  4. 类别
  5. 子类别

我想以不同的方式展示

  1. Name
  2. 一等奖组
  3. 一期子类别
  4. Ph2组
  5. Ph2子类别

    注意:根据我的要求不要更改列名

        $grid.jqGrid({
            data: mydata,
            datatype: "local",
            colNames:['Name','Category','Subcategory','Category','Subcategory'],
            colModel: [
                {name: "Name"},
                {name: "Category"},
                {name: "Subcategory"},
                {name: "PRCategory"},
                {name: "PRSubcategory"}
            ],
            cmTemplate: {width: 200},
            gridview: true,
            autoencode: true,
            sortname: "Name",
            viewrecords: true,
            rownumbers: true,
            sortorder: "desc",
            ignoreCase: true,
            pager: "#pager",
            height: "auto",
            caption: "How to use filterToolbar better locally"
        }).jqGrid("navGrid", "#pager",
            {edit: false, add: false, del: false, search: false, refresh: false});
    
        setSearchSelect.call($grid, "Category");
        setSearchSelect.call($grid, "Subcategory");
    
        $grid.jqGrid("setColProp", "Name", {
            searchoptions: {
                sopt: ["cn"],
                dataInit: function (elem) {
                    $(elem).autocomplete({
                        source: getUniqueNames.call($(this), "Name"),
                        delay: 0,
                        minLength: 0,
                        select: function (event, ui) {
                            var $myGrid, grid;
                            $(elem).val(ui.item.value);
                            if (typeof elem.id === "string" && elem.id.substr(0, 3) === "gs_") {
                                $myGrid = $(elem).closest("div.ui-jqgrid-hdiv").next("div.ui-jqgrid-bdiv").find("table.ui-jqgrid-btable").first();
                                if ($myGrid.length > 0) {
                                    grid = $myGrid[0];
                                    if ($.isFunction(grid.triggerToolbar)) {
                                        grid.triggerToolbar();
                                    }
                                }
                            } else {
                                // to refresh the filter
                                $(elem).trigger("change");
                            }
                        }
                    });
                }
            }
        });
    
        $grid.jqGrid("filterToolbar",
            {stringResult: true, searchOnEnter: true, defaultSearch: "cn"});
        jQuery("#list").jqGrid('setGroupHeaders', {
          useColSpanStyle: true, 
          groupHeaders:[
            {startColumnName: 'Category', numberOfColumns: 2, titleText: '<center>Phase 1</center>'},
            {startColumnName: 'PRCategory', numberOfColumns: 2, titleText: '<center>Phase 2</center>'}
          ]
        });
    
    
      //Choose Column code start
        jQuery("#list").jqGrid('setGroupHeaders', {
          useColSpanStyle: true
        });
    
         $.extend(true, $.ui.multiselect, {
             locale: {
                 addAll: 'Make all visible',
                 removeAll: 'Hide All',
                 itemsCount: 'Avlialble Columns'
             }
         });
         $.extend(true, $.jgrid.col, {
            width: 250,
            height: 330,
             modal: true,
             msel_opts: {dividerLocation: 0.5},
             dialog_opts: {
                 minWidth: 140,
                 show: 'blind',
                 hide: 'explode'
             }
         });
         jQuery("#list").jqGrid('navButtonAdd', '#pager', {
             caption: "",
             buttonicon: "ui-icon-calculator",
             title: "Choose columns",
             onClickButton: function () {
                 $(this).jqGrid('columnChooser');
             }
         });
        //Column chooser code stop
    
    });
    //]]>
    

    Image 1 enter image description here

Image 2


我觉得你的问题很有趣。所以我+1。因此我投入了一些时间修改了代码columnChooser用于免费 jqGrid https://github.com/free-jqgrid/jqGrid。我另外修改了showHideColumnMenu插件,我最初创建它作为答案问题 https://github.com/tonytomov/jqGrid/issues/650。我对免费 jqGrid 的代码做了一些小修改,并将插件添加到免费的 jqGrid 存储库 https://github.com/free-jqgrid/jqGrid。下面我描述一下如何使用columnChooser, showHideColumnMenu还有一种新方法createContexMenuFromNavigatorButtons.

你遇到的问题不仅仅在于columnChooser。即使您确实按照需要填写列名,您仍然会遇到以下问题:用户可以更改订单列,以便将列移入/移出组,这将破坏列分组的当前实现。我看到的唯一方法columnChooser: 不要打电话this.jqGrid("remapColumns", perm, true);里面的done打回来。我修改了代码columnChooser在免费的 jqGrid 中,使其遵循规则。

现在是列标题的最简单用法(请参阅the demo http://www.ok-soft-gmbh.com/jqGrid/OK/groupingHeadersWithColumnChooser.htm)将显示如下图所示的结果:

另外我介绍了回调buildItemText,它允许自定义显示的文本columnChooser。回调有一个对象作为唯一参数。 options 参数具有以下属性iCol(索引在colModel), cm(该项目colModel), cmName (cm.name), colName (colName[iCol]) and groupTitleText这是分组标题(来自titleText的财产groupHeaders的选项setGroupHeaders)。因此,您可以完全自定义显示的文本。下一个演示 http://www.ok-soft-gmbh.com/jqGrid/OK/groupingHeadersWithColumnChooser-custom.htm显示

它使用以下选项columnChooser

$(this).jqGrid("columnChooser", {
    buildItemText: function (options) {
        if (options.groupTitleText === null) {
            return $.jgrid.stripHtml(options.colName || options.cmName);
        }
        return $.jgrid.stripHtml(options.groupTitleText) + " -> " +
            $.jgrid.stripHtml(options.colName || options.cmName);
    }
});

正如我在答案开头所写,现在存在showHideColumnMenu方法作为免费的 jqGrid 插件(我想稍后将其移到 jqGrid 的主代码中)。只需添加以下简单调用即可使用

$grid.jqGrid("showHideColumnMenu");

它使用 jQuery UI 菜单并进行绑定contextmenu到列标题。单击鼠标右键会创建如下图所示的上下文菜单(请参见the demo http://www.ok-soft-gmbh.com/jqGrid/OK/showHideColumnMenu.htm).

通过选中/取消选中菜单项,可以启用/禁用列不改变列顺序。该插件也支持自定义。下面的代码

$grid.jqGrid("showHideColumnMenu", {
    buildItemText: function (options) {
        if (options.groupTitleText === null) {
            return $.jgrid.stripHtml(options.colName || options.cmName);
        }
        return "<em>" + $.jgrid.stripHtml(options.groupTitleText) + "</em>: " +
            $.jgrid.stripHtml(options.colName || options.cmName);
    }
});

产生以下自定义菜单

我添加了免费的 jqGrid 插件createContexMenuFromNavigatorButtons可以像下面这样使用

$grid.jqGrid(
    "createContexMenuFromNavigatorButtons",
    $grid.jqGrid("getGridParam", "pager")
);

对应的demo http://www.ok-soft-gmbh.com/jqGrid/OK/createContexMenuFromNavigatorButtons.htm使用上述所有功能,并使用以下命令在网格体内另外显示上下文菜单createContexMenuFromNavigatorButtons。该菜单包含与导航栏相同的项目。如果网格有很多行,这非常实用。人们不需要滚动到底部或顶部工具栏即可仅单击导航器按钮。结果如下图所示

附:如果代码中出现错误结果,请检查上述演示中插入的插件的 CSS/JavaScript 路径。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何更改 jqgrid 中弹出的列选择器中的列名称? 的相关文章

  • jQuery AJAX“multipart/form-data”未发送数据?

    我不知道为什么我无法让 jQuery 传递上传数据 因为 AJAX 对象似乎已正确配置 并且正在发送正确的 Content Type MIME Type 标头 我尝试了两种不同形式的请求 一种是在文字中包含 FormData 对象 另一种是
  • 是否可以使用 Javascript 读取 PHP 会话?

    我正在使用 cakePHP 1 26 在控制器中 我得到了一个包含以下代码行的函数 this gt Session gt write testing user this gt Session gt read testing 现在系统编写了一
  • 单击react.js 切换列表的背景颜色

    我正在尝试创建一个具有以下功能的列表 悬停时更改列表项的背景颜色 单击时更改列表项的背景颜色 在单击的元素之间切换背景颜色 即列表中只有一个元素可以具有 clicked 属性 我已经执行了 onhover 1 和 2 功能 但无法实现第三个
  • 如何在 jQuery 中检查复选框是否被选中?

    我需要检查checked复选框的属性 并使用 jQuery 根据选中的属性执行操作 例如 如果age复选框被选中 然后我需要显示一个文本框来输入age 否则隐藏文本框 但下面的代码返回false默认情况下 if isAgeSelected
  • jQuery fadeOut 一个 div,fadeIn 另一个 div 在其位置

    我正在尝试一个简单的 jQuery 脚本来淡出一个 div 并淡入另一个 div 但由于某种原因 第一个 div 永远不会淡出 这可能是代码的一个明显问题 但我似乎无法弄清楚 div div div div
  • 我无法使用 jQuery 和 abort() 函数停止 ajax 请求

    我的 jQuery 如下 var x ajax dataType jsonp url https ajax googleapis com ajax services search images q google v 1 0 success
  • 全屏 API:会触发哪些事件?

    我需要知道当用户通过新的进入全屏模式时会触发哪些 DOM 事件全屏API https developer mozilla org en DOM Using full screen mode 我尝试了这个片段 但它没有触发 jQuery bo
  • 当鼠标悬停在绝对 div 上时 jQuery 禁用滚动

    当鼠标悬停在 div 上时 我试图禁用窗口鼠标滚动功能 以便仅启用 div 滚动 当鼠标移离 div 时 再次应用滚动到窗口 div 是绝对定位的 我看过这个帖子当鼠标光标位于div内时 使用jquery禁用鼠标滚轮功能 https sta
  • jQuery:如何引用类名带有句点的 HTML 元素?

    我这样有几个元素 td class sede co uk 我想这样使用 jquery 引用它们 td sede co uk 但 jquery 没有 找到 它们 因为 我猜 co 和 uk 之间的点 任何想法 Regards Javi You
  • 使用 jQuery 和 jQuery UI 运行任何 Jest 测试时出现问题

    所以我有一个名为的开源库Angular Slickgrid https github com ghiscoding Angular Slickgrid还没有测试 我正在尝试使用 Jest 但真的很难使用它 该库是旧的 jQuery 数据网格
  • 如何在执行回调函数之前等待 jQuery 的加载函数渲染加载的内容

    当文档准备好时 我使用 jQuery 的加载函数来呈现我的一些内容 document ready function header load header html function do call back function footer
  • Magento 中的 jquery/prototype 冲突

    这是一个基于 Themeforest 的 Acumen 主题的 Magento 商店 出乎意料的是 jquery 的东西现在不起作用了 Acumen 通过 magento 静态块加载 jquery 但这些都没有被触及 昨天我正在努力添加 j
  • jqgrid 在编辑框中选择不正确的下拉选项值

    我正在使用表单编辑 表单中有两个选择框 一个选择框是国家 地区 另一个选择框是州 州选择框取决于所选的国家 地区 并将动态填充 例如 Country 美国 期权价值 1 英国 期权价值 2 美国的状态 阿拉巴马州 选项值 1 加利福尼亚州
  • 标点符号加载“动画”,javascript?

    我正在寻找一种好方法来显示一些标点符号加载 动画 我想要的是这样的 This will display at second 1 Waiting for your input This will display at second 2 Wai
  • 使用什么事件来在选择文本框中的值时显示警报消息

    我正在使用 jquery 的自动完成 api 来从数据库中获取名称 但是我想在从显示的文本框中选择名称时显示一条警报消息 我将显示一个图像以便更好地理解 当我输入 S 时 它将显示所有包含 S 的记录 所以问题是 如果我选择例如 Spars
  • Javascript:如何根据 html 标签扩展用户选择?

    乐代码 http jsfiddle net frf7w 12 http jsfiddle net frf7w 12 所以现在 当前的方法将完全按照 选择的方式获取所选文本 并添加标签 以便在显示时页面不会爆炸 但我想做的是 就是说 当用户选
  • JQuery 可排序嵌套可排序 div

    这个问题与这个有关Nest jQuery UI 可排序 https stackoverflow com questions 19129476 nest jquery ui sortables 但我无法解决我的问题 问题是 我有一个包含项目的
  • 如何使用javascript隐藏div

    我想使用 Javascript 隐藏一个 div 下面是我的div div class ui dialog titlebar ui widget header ui corner all ui helper clearfix span cl
  • 使用jquery和coldfusion cffile上传多个文件

    不是一个真正的问题 只是想将其发布在某个地方 因为我在其他地方找不到它 现在我已经拼凑了一个工作演示 我想我会分享 这在 Coldfusion 和 Railo CFML 服务器上同样有 效 问题是 对于 CFML 开发人员来说 CFFILE
  • 附加元素在 IE11 中不起作用

    在构造函数中我创建一个元素 var this legendElement this compileLegend 后来我想在事件监听器中使用它 var takeControl function this element empty this

随机推荐

  • 如何从子查询返回多个值

    SELECT state business a report FROM base WHERE state IN SELECT a state FROM heart a join SELECT CAST MAX percent adults
  • 按 ID 累积总和,有滞后

    我想通过 id 创建一个累积和 但是 它不应该对属于正在计算的行的值求和 我已经尝试过使用 cumsum 了 但是 我不知道如何添加一条语句 指定不添加求和行的金额 我正在寻找的结果列是第三列 名为 sum 例如 对于 id 1 第一行 s
  • PySimpleGUI 表元素。如何读取选定的行?

    我是 Python 的初学者 甚至是 PySimpleGui 的初学者 我非常喜欢使用它来创建带有 GU 界面的小型应用程序 我遇到的问题是关于表格元素的 到目前为止 我已成功使用 sqlite 数据库中的数据填充表元素 一旦表格准备好数据
  • 如何将 `git diff --color-words` 的输出转换为 HTML?

    对于处理以纯文本形式存储的散文文本 我真的很喜欢以下输出git diff color words 但我不喜欢它依赖于 ANSI 终端转义序列的方式 我希望获得可用于转换为 HTML 的输出 某种用户友好的原始字符显示 或生成有关两个文件之间
  • HTML5 可以通过其视频标签播放 .mpd Manifest 文件吗?

    我有一个 Movie Manifest mpd 文件 由 5 个 webm 视频流 由不同大小和 bps 组成 和 1 个音频文件组成 我要问的问题是 可以通过 简单 的HTML5视频标签来播放吗 我已经尝试过这个 但它不起作用
  • 随机卡牌生成

    我需要从数组中随机生成三张卡 我有 52 张卡名称的数组 从卡1到卡52 String rank new String 52 for int i 0 i
  • ARMv8 浮点输出内联汇编

    为了添加两个整数 我写 int sum asm volatile add 0 x3 x4 r sum 我怎样才能用两个浮动来做到这一点 我试过 float sum asm volatile fadd 0 s3 s4 r sum 但这给了我一
  • 如何创建读取 shebang 的 Sublime Text 3 构建系统

    如何在 Sublime Text 3 中创建构建系统 cmd 是否被替换为 shebang 如果存在 更具体地说 是否有办法更改 Python 构建系统以使用 shebang 中指定的 Python 版本 并在不存在 shebang 的情况
  • AngularJS:为什么 ng-model 值没有在范围变量中更新

    我正在使用 jquery timepicker 插件及其角度指令 当我从 javascript 重置范围值时 同时范围值不会更新 我尝试对 timepicker 指令文件进行更改 但没有成功 例子 选择开始时间 1 00AM 然后结束时间自
  • geom_text 适用于 R 中的直方图?

    想知道是否geom text效劳于hist 尝试了下面的代码 似乎没有效果 我只想在为每个直方图桶绘制每个条形时显示标签 属于特定直方图桶的元素数量 任何解决方案表示赞赏 谢谢 p lt hist df foo main title xla
  • 从存储为节点缓冲区的字节数组创建类型化数组

    从节点docs https nodejs org api buffer html buffer buf slice start end关于从缓冲区创建类型化数组 缓冲区的内存被解释为数组 而不是字节数组 那 是 new Uint32Arra
  • 后台进程重定向到 COPROC

    在下面的测试脚本中 我运行一个基本协进程 echo内置 在后台运行 附加其标准输出 bin bash TEST 1 coproc bin sleep 100 echo gt COPROC 1 该脚本总是失败 没有明显的原因 给出输出 tes
  • 如何确定 .Net DLL 是否用于 GUI 应用程序或 Web 服务?

    如何确定 Net DLL 是否在 Windows GUI 应用程序或 Web 服务中运行 我有一个低级类 在两个应用程序之间共享 并且需要在 Web 服务中使用它时禁用消息框 Windows 应用程序有超过 200 个解决方案 我无法重构现
  • 将 !important 应用于具有多个选项的字体系列

    如何将 important 应用于以下样式 font family Trebuchet MS Verdana Helvetica Sans Serif 我已经尝试过这个 但不起作用 font family Trebuchet MS Verd
  • Prolog 程序返回命题公式中的原子

    我是序言新手 正在尝试编写一个返回atoms在一个结构良好的命题公式中 例如查询ats and q imp or p q neg p As 应该返回 p q for As 下面是我的代码 它返回的公式为As 我不知道该怎么做才能拆分sing
  • IIS7 URL从根目录重定向到子目录[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用带有 IIS7 的 Windows Server 2008 我需要重定向访问的用户www mysite com to wwww
  • oracle中的触发器

    触发器可以增强或阻碍性能的条件是什么 何时使用系统中的触发器 何时不使用触发器 如何使用触发器来施加复杂的约束 执行触发器总是会产生一些开销 至少 您要为导致触发器触发的每一行执行从 SQL 引擎到 PL SQL 引擎的上下文转换 虽然触发
  • JavaFX ObservableList - 添加项目导致 ConcurrentModificationException

    我有一张桌子Albums用户可以过滤和排序 这是该表的样子 正如您所看到的 这些列是可排序的 并且顶部有一个文本框 当前正在过滤其中包含字符串 cu 的专辑 一切都很完美填充专辑列表后 但是 如果我在填充专辑列表时尝试排序或过滤 我会得到一
  • c++ 不合逻辑 >= 处理 vector.size() 时的比较很可能是由于 size_type 是无符号的

    在处理 vector size 又名 size type 时 我可以使用一些帮助来澄清这种奇怪的比较 vector
  • 如何更改 jqgrid 中弹出的列选择器中的列名称?

    我有一个两列标题 Phase1 和 Phase 2 图像 1 现在在列选择器窗口中显示列名称 图 2 Name 类别 子类别 类别 子类别 我想以不同的方式展示 Name 一等奖组 一期子类别 Ph2组 Ph2子类别 注意 根据我的要求不要