【问题标题】:How to access ColumnChooser's API to toggle the $ui.multiselect components如何访问 ColumnChooser 的 API 以切换 $ui.multiselect 组件
【发布时间】:2013-09-14 12:51:26
【问题描述】:

有没有办法访问 jqGrid 的 columnChooser 的多选 API 对象?我需要调用这些对象来更新 ColumnChooser 弹出对话框中的数据。

在下面的快照中,是自定义的 ColumnChooser 弹出对话框。选择/更改时的 HTML 组合将更改 $ui.multiselect 部分(可用和不可用列)。

在下面的第二张快照中是使用 Firefox 的萤火虫的视图源,我没有切换 2 列的选项。

有没有办法访问 ColumnChooser 的 API,手动切换 ColumnChooser 上的列但不触及 jqGrid 的列?我怎样才能做到这一点?

谢谢...

[快照 #1]... [快照#2]...

【问题讨论】:

    标签: jqgrid


    【解决方案1】:

    在谷歌浏览了几天后,从大量示例 api 中拼凑出示例脚本,并提出了 JQuery 来查找可点击锚链接的 html 路径。

    更新的解决方案

    “parmSavedBuildDataFormValueColumnModelSetting”值是您传递给它的 colModel 的名称,无论是您从数据库或 cookie 中保存的值,还是用于填充 MultiSelect“选定”框窗口的任何值。

            function JqgridColumnChooserSavedBuildsRecordsMultiselectDialogToggler(parmSavedBuildDataFormValueColumnModelSetting) {
                //Re-order the $.ui.multiselect's columns in 2 boxed-windows (available & unavailable)...
                //http://stackoverflow.com/questions/10439072/add-remove-column-handler-on-jqgrid-columnchooser
                //http://stackoverflow.com/questions/11526893/jqgrid-columnchooser-unselected-columns-on-the-right-in-alphabetical-order
                var $jqgridColumModelSetting = $('#' + jqgridSpreadsheetId).jqGrid('getGridParam', 'colModel');
                var $jqgridColumNameSetting = $('#' + jqgridSpreadsheetId).jqGrid('getGridParam', 'colNames');
    
                //Remove all of the "selected" columns having "-" icon...
               //09/11/2013 - This "selected" columns with hyperlink click event does not work too well as it cause 1/3 of all columns not to be visible, so let' use the "Remove All" hyperlink instead...
                //#$('#colchooser_' + jqgridSpreadsheetId + ' ul.selected a.action').click();
                $('#colchooser_' + jqgridSpreadsheetId + ' div.ui-multiselect div.selected a.remove-all').click();
    
                //Add back the "available" columns having "+" icon, only the one that match the SavedBuilds data...
                $.each(parmSavedBuildDataFormValueColumnModelSetting.split('|'), function (i1, o1) {  //##parmSavedBuildDataFormValueColumnModelSetting.forEach(function (i, o) {
                    $.each($jqgridColumModelSetting, function (i2, o2) {
                        if (o2.name == o1) {
                            $('#colchooser_' + jqgridSpreadsheetId + ' ul.available li[title="' + $jqgridColumNameSetting[i2] + '"] a.action').click();
                            return false;  //This only break the foreach loop [while "return true" resume the loop] (This have nothing to do with function's returned value)...
                        }
                    });
                });
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      相关资源
      最近更新 更多