将colUmn与colModel对象匹配的最佳方法是什么?

时间:2013-09-09 14:25:07

标签: jqgrid

我在ColumnChooser弹出对话框中编写了JQuery来抓取列的文本,以便获取colModel的名称(或索引)然后我知道它不能以这种方式工作,我必须以某种方式使用colName来代替colModel。

问题..

colNames: [ 'Id', 'Stock Number', 'VIN', 'Year' ],
colModel: [ 
    { name: 'Id', index: 'Id' },
    { name: 'StockNumber', index: 'StockNumber' }, 
    { name: 'VIN', index: 'VIN' }, 
    { name: 'Year', index: 'Year' }

正如您所看到的那样,当$ jqgridColumnModelSetting使用$ ColumnChooserSelectedList时,“Stock Number”与“StockNumber”不同。另外,我无法判断列是否处于正确的顺序(在colName和colModel之间),因为我不知道它是如何在场景后面工作的。

 var $ColumnChooserSelectedList = $("#colchooser_test ul.selected li");
 var $ColumnModelSetting = $("#test").jqGrid('getGridParam', 'colModel');
 var returnValue = "";

 $.each($ColumnChooserSelectedList, function (i,o) {
    if (o.title.length > 0) {
       if (returnValue.length > 0) { returnValue += "|"; }
       returnValue += o.title;   //This o.title need to be changed to match colModel's Name (or Index)...
    }
 });

...谢谢

已更新 - 已找到解决方案

想出了这个不错的解决方案,但我无法确定它是否100%有效。

 var $ColumnChooserSelectedList = $("#colchooser_test ul.selected li");
 var $ColumnModelSetting = $("#test").jqGrid('getGridParam', 'colModel');
 var $ColumnNameSetting = $("#test").jqGrid('getGridParam', 'colNames');
 var returnValue = "";

 $.each($ColumnChooserSelectedList, function (i1,o1) {
    if (o1.title.length > 0) {
       $.each($ColumnNameSetting, function (i2, o2) {
         if ($ColumnNameSetting[i2] == o1.title) {
            if (returnValue.length > 0) { returnValue += "|"; }
            returnValue += $ColumnModelSetting[i2].name;   
            return false;  //This break the foreach loop...
         }
       });     
    }
 });

1 个答案:

答案 0 :(得分:0)

已更新 - 已找到解决方案

想出了这个不错的解决方案,但我无法确定它是否100%有效。

 var $ColumnChooserSelectedList = $("#colchooser_test ul.selected li");
 var $ColumnModelSetting = $("#test").jqGrid('getGridParam', 'colModel');
 var $ColumnNameSetting = $("#test").jqGrid('getGridParam', 'colNames');
 var returnValue = "";

 $.each($ColumnChooserSelectedList, function (i1,o1) {
    if (o1.title.length > 0) {
       $.each($ColumnNameSetting, function (i2, o2) {
         if ($ColumnNameSetting[i2] == o1.title) {
            if (returnValue.length > 0) { returnValue += "|"; }
            returnValue += $ColumnModelSetting[i2].name;   
            return false;  //This break the foreach loop...
         }
       });     
    }
 });