2013-01-04 23 views
1

我是Datatable的新手,正在嘗試配置Datatable,以便它使用ajax獲取數據,將其顯示爲複選框,錨點和選項卡,並允許用戶把它分類。 我有ajax和格式化部分,但是當我嘗試對複選框進行排序時,它什麼都不做。我擡起頭來documented example並採取了排序處理如此:使用Ajax數據源時的數據表排序

代碼進行排序:

/* Create an array with the values of all the checkboxes in a column */ 
     $.fn.dataTableExt.afnSortData['dom-checkbox'] = function (oSettings, iColumn) { 
      var aData = []; 
      $('td:eq(' + iColumn + ') input', oSettings.oApi._fnGetTrNodes(oSettings)).each(function() { 
       aData.push(this.checked == true ? "1" : "0"); 
      }); 
      return aData; 
     } 

代碼創建的複選框:

$('#example').dataTable({ 
     "bProcessing": true, 
     "sAjaxSource": "sources/myData.json", 
     "sAjaxDataProp": "items", 
     "aoColumns": [ 
      { 
       "mData": function (source, type, val) { 
        if (source.Published) 
         return '<input type="checkbox" checked="checked"/>'; 
        else 
         return '<input type="checkbox" />'; 

       }, 
       //"sType": "dom-checkbox", 
       "sSortDataType": "dom-checkbox" 
       //, "bSortable": false 
      }, 
      { "mData": "Author" }, 
      { 
       "mData": function (source, type, val) { 
        return '<a href="' + source.Href + '">' + source.$name + '</a>'; 
       } 
      } 
     ] 
    }); 

排序功能($.fn.dataTableExt.afnSortData['dom-checkbox']被調用,數據被返回,但是表格沒有被更新(代碼工作,但不是用於ajax表格)

數據樣本:

{ 
    "items": [ 
     { 
      "$name": "a", 
      "Href": "http://google.com", 
      "Author": "a", 
      "Published": true 
     }, 
     { 
      "$name": "c", 
      "Href": "http://www.whiskas.at/", 
      "Author": "a",   
      "Published": false 
     } 
    ] 
} 

回答

1

請注意,您所寫的是標準JavaScript,而不是jQuery。如果這指的是一個jQuery對象而不是DOM元素,那麼選中將是未定義的,因爲jQuery對象沒有checked屬性。如果這是一個jQuery對象,你可以嘗試以下的一些例子:

this.prop("checked"); 

$(this).is(":checked") 

在當前的分類功能與this.checked替換此。這裏有一個例子:

//Create an array with the values of all the checkboxes in a column 
$.fn.dataTableExt.afnSortData['dom-checkbox'] = function (oSettings, iColumn) { 
    var aData = []; 
    $('td:eq(' + iColumn + ') input', oSettings.oApi._fnGetTrNodes(oSettings)).each(function() { 
    aData.push($(this).is(':checked') == true ? "1" : "0"); //New jQuery variable here 
    }); 
    return aData; 
} 
+0

不,這並沒有解決它。 th $ .fn.dataTableExt.afnSortData ['dom-checkbox']似乎沒有被稱爲 – Stefan

+0

你可以上傳一個JSfiddle,我可以玩它來幫助它工作嗎? –

+0

問題是,我不知道如何加載數據在jFiddle – Stefan