2014-02-12 79 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。

我會建議使用:

"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

我想這沒有任何成功,很遺憾。看起來你不能在fnDrawCallback中使用fnSort。該表無法加載。 – user3101337

+0

在初始化數據表之前,您是否可以使用p_col?或者你可以在初始化之後調用fnSort()。如果您發佈更完整的代碼,我可能會提供其他建議。 – Bret

+0

在文檔準備就緒之後,在表被初始化之前,P_Col被設置爲'0'。如果我在初始化之後調用fnSort(),它將使用之前設置的值'0'。出於某種原因,fnRowCallback不會更新變量中的值。我正在做這一切,所以我可以格式化數據並根據列名進行排序,而不是索引。如果我使用ColReorder,索引將會改變,格式會變得混亂。 – user3101337