2014-02-12 2 views
1

Я установил глобальную переменную в верхней части моей страницы. P_Col = '0';Передача переменной между функциями данных

Я изменяю эту переменную в функции fnRowCallback, а затем пытаюсь использовать ее в функции aaSorting, но aaSorting использует 0, он никогда не получает обновленное значение переменной из функции обратного вызова. Кто-нибудь может мне с этим помочь?

"fnRowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { 
     var oSettings = oTable.fnSettings(); 

     $.each(oSettings.aoColumns, function(i,value){ 
      if (value.sTitle == "Priority"){ 
       P_Col = i; 
      }; 

      $.each(aData, function(ii,value2){ 
       if (value.sTitle == "Priority" && aData[i] != ""){ 
        $('td:eq(' + i + ')', nRow).css('background-color', '#F6CED8'); 
       } 
      }); 
     }); 
    } , 
    "aaSorting": [[P_Col, 'desc'], [12, 'asc']] 

ответ

0

aaSorting вызывается во время создания данных. fnRowCallback вызывается, когда строка создается после создания datatable.

Я предложил бы использовать:

"fnDrawCallback": function(oSettings) { 
    var oTable= this; 
    //Then Call sort based on your priority 
    $.each(oSettings.aoColumns, function(i,value){ 
     if (value.sTitle == "Priority"){ 
      //P_Col = i; 
      oTable.fnSort([ [i,'asc'] ]); 
     }; 
    } 
+0

Я попытался это без какого-либо успеха, к сожалению. Похоже, вы не можете использовать fnSort в fnDrawCallback. Таблица не загружается. – user3101337

+0

Действительно ли вы можете p_col перед инициализацией таблицы данных? Или вы можете вызвать fnSort() после инициализации. Если вы разместите более полный код, я могу предложить другие рекомендации. – Bret

+0

P_Col устанавливается в «0» сразу после готовности документа, задолго до инициализации таблицы. Если я вызываю fnSort() после инициализации, он использует значение '0', которое я установил ранее. По какой-то причине fnRowCallback не обновляет значение в переменной. Я делаю все это, поэтому я могу форматировать данные и сортировать на основе имени столбца, а не индекса. Если я использую ColReorder, индекс изменится, и форматирование будет испорчено. – user3101337

Смежные вопросы