0

I wrote JQuery to grab columns' text in the ColumnChooser pop-up dialog, in order to get colModel's Name (or Index) then I learned it doesn't work that way and I have to somehow use colName against colModel instead.

Problem..

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

As you can see my problem is "Stock Number" is not the same as "StockNumber" when using $ColumnChooserSelectedList against the $jqgridColumnModelSetting. Also, I cannot tell if columns are in proper order (between colName & colModel) as I don't know how it works behind the scene.

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

Thanks...

Updated - Solution found

Came up with this nice solution but I cannot be sure if it works 100% of the time.

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

1 回答 1

0

Updated - Solution found

Came up with this nice solution but I cannot be sure if it works 100% of the time.

 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...
         }
       });     
    }
 });
于 2013-09-13T12:53:43.010 回答