2014-02-21 25 views
1

我在訪問「fnFooterCallback」中的aaData的值時遇到問題。我不能顯示aaData的總值,使用數據表jquery

這是日誌的輸出:

aaData:[對象的對象],[對象的對象],[對象的對象],[對象的對象]

真的,我已經4行顯示在數據表中,但我無法訪問這些值以顯示數據集中的總計。

我嘗試使用此:

"fnDrawCallback": function(oSettings) { 
    console.log("aaData: "+oSettings.aoData); 
    iTotal = [0, 0]; 
    for (var i = 0; i < oSettings.aoData.length; i++) { 
     iTotal[0] += oSettings.aoData[i]._aData.quantity; 
    } 

    //Totales 
    $("#Totales").empty(); 
    $("#Totales").append('<th>sum</th><th>'+iTotal[0]+'</th>'); 
} 

我也試着用這樣的:

"fnFooterCallback" : function(nRow, aaData, iStart, iEnd, aiDisplay) { 
    console.log("aaData: " + aaData); 
    var totalCantidad = 0; 
    for (var i = 0; i < aaData.length; i++) { 
     totalCantidad = totalCantidad+ parseInt(aaData[i].Cantidad) * 1; 
    } 
    var nCells = nRow.getElementsByTagName('th'); 
    nCells[1].innerHTML = totalCantidad; 
} 

這是我的數據表定義:

$("#lineOutletTable").dataTable({ 
    "bInfo" : false, 
    "bPaginate" : false, 
    "bLengthChange" : true, 
    "iDisplayLength" : -1, 
    "bFilter" : false, 
    "bSort" : true, 
    "aaSorting" : [ [ 0, "asc" ] ], 
    "bAutoWidth" : false, 
    "oLanguage" : spanishInfo, 
    "aoColumns" : columnsTableLine, 
    "sPaginationType" : "bootstrap", 
    "iDisplayStart" : 20, 
    "sScrollY" : "60px", 
    "sDom" : "<row-fluid'<'span6 wrapMedidasReales'><'span6 wrapPrecios'>>t<row-fluid'<'span6 'l><'span6'p>>", 
    "fnDrawCallback" : function(oSettings) { 
     console.log("aaData: " + oSettings.aoData); 
     iTotal = [ 0, 0 ]; 
     for (var i = 0; i < oSettings.aoData.length; i++) { 
      iTotal[0] += oSettings.aoData[i]._aData.quantity; 
     } 
     // Totales 
     $("#Totales").empty(); 
     $("#Totales").append('<th>sum</th><th>' + iTotal[0] + '</th>'); 
    }, 
    "fnFooterCallback" : function(nRow, aaData, iStart, iEnd, aiDisplay) { 
     console.log("aaData: " + aaData); 
     var totalCantidad = 0; 
     for (var i = 0; i < aaData.length; i++) { 
      totalCantidad = totalCantidad + parseInt(aaData[i].Cantidad) * 1; 
     } 
     var nCells = nRow.getElementsByTagName('th'); 
     nCells[1].innerHTML = totalCantidad; 
    } 
}); 

我從讀出值Ajax,除總數外,數據集正常工作。

我如何訪問aaData中的值?

+0

嘗試:ITOTAL [0] + = parseInt函數(oSettings.aoData [I] ._ aData.quantity ); – mainguy

回答

0

由於您沒有包含表格的html部分和ajax調用的結果,所以很難說清楚您想要做什麼。所以我不知道你想在哪裏顯示你的總數。

看一看這段代碼:

$(function() { 
    totals = 0; 
    var otable = $("#datatable").dataTable({ 
    "fnFooterCallback": function(nRow, aaData, iStart, 
     iEnd, aiDisplay) { 
     x = aaData; 
     $.each(x, function(key, value) { 
     totals = totals + parseInt(value[1]); 
     }) 
     $("#Totales").empty(); 
     $("#Totales").append('Totals: ' + totals); 

    } 
    }); 
}); 

Plunker

這至少應該給你一個提示ABOT如何訪問aaData。也許可以使用plunker作爲基礎並填寫完整的定義。那麼我們有一個更好的起點。

0

對於HTML代碼是:

<div class="row finder-line-outlet-container table-wrapper"> 
       <table cellpadding="0" cellspacing="0" border="0" 
        class="table table-striped table-bordered table-condensed dataTable customTable" 
        id="lineOutletTable" aria-describedby="example_info"> 
        <thead> 
         <tr> 
          <th></th> 
          <th></th> 
          <th></th> 
          <th></th> 
          <th></th> 
          <th></th> 
          <th></th> 
          <th></th> 
         </tr> 
        </thead> 

        <tfoot> 
         <tr> 
          <th>Totales</th> 
          <th id="totalCantidad"></th> 
          <th></th> 
          <th></th> 
          <th></th> 
          <th id="totalMetros"></th> 
          <th></th> 
          <th></th>       
         </tr> 
       </table> 
      </div> 

我用你的功能,但錯誤是一樣的,當我在控制檯打印總數的值是NaN。

我用ajax訪問數據。

我解決了問題,在函數Ajax中,帶來的數據,我總結值,並在fnFooterCallback,打印值,但爲什麼不工作,總結fnFooterCallback中的值?

+0

如果你得到NaN錯誤(不是數字),它可能與總結不是數字的值(如字符串)有關。雖然他們看起來像正常數字,但實際上並不是這樣。這就是parseint()的用途。它將一個字符串轉換爲可以通過數學運算處理的數字。再說一遍:如果您向我們展示您從ajax調用中獲得的數據,將會更有幫助。plz:不要在你的問題中發佈擴展,作爲不起作用的答案,對於想要學習如何解決問題的其他人沒有價值。 – mainguy

0

也許這則:

console.log("aaData: "+oSettings.aoData.length); 

應該可以正常工作,如果我得到你的問題的權利..