Я написал 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...
}
});
}
});
См. Редактирование выше решения, которое я придумал. Надеюсь, что он работает в 100% случаев. – fletchsod