2013-09-09 2 views
0

Я написал JQuery, чтобы захватить текст столбцов во всплывающем диалоговом окне ColumnChooser, чтобы получить имя ColModel (или Index), после чего я узнал, что это не работает, и мне нужно как-то использовать colName вместо 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' } 

Как вы можете видеть, моя проблема «Инвентарный номер» не то же самое, как «StockNumber» при использовании $ ColumnChooserSelectedList против $ jqgridColumnModelSetting. Кроме того, я не могу определить, находятся ли столбцы в правильном порядке (между 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... 
     } 
     });  
    } 
}); 
+0

См. Редактирование выше решения, которое я придумал. Надеюсь, что он работает в 100% случаев. – fletchsod

ответ

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... 
     } 
     });  
    } 
});