2010-07-09 40 views
10

Tôi làm cách nào để thêm lớp vào hàng mà tôi đang thêm vào dữ liệu?Làm thế nào để thêm một lớp vào một hàng mới trong một datatables jquery?

Nếu không thể, làm cách nào tôi có thể sử dụng fnRowCallback hoặc fnDrawCallback để thay đổi lớp học?

oTable = $('#example').dataTable({ 
    "bJQueryUI": true, 
    "bSortClasses": false, 
    "sDom":'T<"clear">', 
    "sPaginationType": "full_numbers", 
    "sDom": 'T<"clear"><"fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix"lfr>t<"fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix"ip>', 
    "fnRowCallback": function(nRow, aData, iDisplayIndex) { 

    var oSettings = oTable.fnSettings(); 
    oSettings.aoData[iDisplayIndex].nTr.className = "gradeX odd"; 
    } 
}); 

Mã trên đây gây lỗi cho tôi.

đây là cách tôi thêm hàng:

oTable.fnAddData(arr); 
+0

nghi ngờ nó thực sự sẽ giúp đỡ, nhưng thực hiện. Tôi đã thử nhiều thứ khác, nhưng không có kết quả. – Pierluc

+0

hoặc là có một cách tôi có thể chỉ cần thêm một hàng html, để datatable thông qua các chức năng datatables – Pierluc

Trả lời

-4

Được rồi, có lẽ tôi không hiểu chính xác những gì câu hỏi của bạn, nhưng nếu bạn chỉ cần thêm hàng, tại sao không thiết lập các lớp trước khi bạn thêm nó? Như thế này, hơi luộm thuộm, ví dụ:

jQuery("<tr />") 
    .html(your_var_containing_the_interior_dom) 
    .addClass("yourClass") 
    .appendTo(jQuery("#yourTable")) 
19

Hãy thử thay đổi của bạn fnRowCallback như sau:

"fnRowCallback": function(nRow, aData, iDisplayIndex) { 
    nRow.className = "gradeX odd"; 
    return nRow; 
} 

Bạn có thể tham khảo các offical documentation để hiểu thêm chức năng gọi lại này.

+1

giải pháp tốt nhất tôi tìm thấy. Tôi muốn thêm một lớp vào một cột cụ thể thay vì hàng. $ ($ (nRow) .children() [1]) attr ('class', 'status-indicator'); – rhigdon

4

Hãy thử điều này:

"fnRowCallback": function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { 
      var id = aData[0]; 
      $(nRow).attr("id",id); 
      if (jQuery.inArray(aData[0], gaiSelected) != -1) 
      { 
       $(nRow).addClass('row_selected'); 
      } 
      return nRow; 
} 

Để thêm hàng để DataTable thử mã này từ:

http://datatables.net/examples/api/add_row.html

/* Global var for counter */ 
var giCount = 1; 

$(document).ready(function() { 
    $('#example').dataTable(); 
}); 

function fnClickAddRow() { 
    $('#example').dataTable().fnAddData([ 
     giCount+".1", 
     giCount+".2", 
     giCount+".3", 
     giCount+".4" ]); 

    giCount++; 
} 
2
$(document).ready(function() { 
    oTable = $('#table_id').dataTable({"fnInitComplete": after_init}); 
}); 
function after_init(){ 
    $("#table_id tbody tr").addClass("gradeA"); 
} 
9

Bạn có thể thêm classname trong dữ liệu của bạn tự như mô tả trong tài liệu.

http://www.datatables.net/examples/server_side/ids.html

sử dụng DT_RowId để thêm id cho bất kỳ hàng
sử dụng DT_RowClass để thêm lớp cho bất kỳ hàng
sử dụng DT_RowData để thêm đối tượng dữ liệu html5 cho bất kỳ hàng

ví dụ :

"dữ liệu": [ {
"DT_RowId": "row_5",
"first_name": "Airi",
"last_name": "Satou",
"vị trí": "Kế toán",
"văn phòng": "Tokyo ",
"start_date": "Tháng 11 28 08",
"lương": "$ 162.700"
}]

1

này nên làm như lừa:

var r = t.row.add([ 
    .... 
]).node(); 
$(r).css({"color":"red"}); 
+0

Tôi không biết tại sao điều này lại bị bỏ phiếu, điều này giải quyết được vấn đề (ngoại trừ việc thêm CSS nội tuyến) Để thêm một lớp bằng kỹ thuật này, chỉ cần đổi $ (r) .css thành $ (r) .addClass ('class '); –

1

tài liệu chính thức cho biết:

var table = $('#example').DataTable(); 

table 
    .rows.add([ 
     new Pupil(43), 
     new Pupil(67), 
     new Pupil(102) 
    ]) 
    .draw() 
    .nodes() 
    .to$() 
    .addClass('new'); 

Vui lòng đọc: rows.add()

+0

Mã này là để xem nhiều hàng tại mỏ cho một hàng. –

0

Sau khi đọc các tài liệu hướng dẫn công việc này cho tôi:

var my_dataTable = $('#my-table').DataTable(); 
my_dataTable.row.add([ 
       'Hello', 
       'Hello2', 
       'Hello3', 
       'Hello4' 
      ]).draw().nodes().to$().addClass("my_class"); 
Các vấn đề liên quan