2012-07-10 8 views
8

Tôi đang theo dõi the example here. Sử dụng mảng chứa đối tượng.Jquery datatables không hiển thị tiêu đề cột

tôi tạo mảng của tôi trong một vòng lặp for như

historyArray[i] = { 
    "User": strUserName, 
    "Timestamp" : date.toString(), 
    "Latitude" : point.lat, 
    "Longitude" : point.lng 
}; 

thực hiện DataTable của tôi này:

$(document).ready(function() { 
    $('#dynamic').html('<table cellpadding="0" cellspacing="0" border="0" class="display" id="report"></table>'); 
    $('#report').dataTable({ 
     "aaData": historyArray, 
     "aoColumns": [ 
      { "mDataProp": "User" }, 
      { "mDataProp": "Timestamp" }, 
      { "mDataProp": "Latitude" }, 
      { "mDataProp": "Longitude" } 
     ], 
     "bJQueryUI": true, 
     "sPaginationType": "full_numbers", 
     "sDom": '<"H"Tfr>t<"F"ip>', 
     "oTableTools": { 
      "sSwfPath": "swf/copy_csv_xls_pdf.swf", 
      "aButtons": ["copy", "csv", "xls", "pdf"] 
     } 
    }); 
}); 

Tôi nhận được dữ liệu chính xác nhưng không có tiêu đề cột, am i thiếu một cái gì đó?

Trả lời

4

Cố gắng thay đổi yếu tố <table> của bạn như thế này:

<table id=report> 
    <thead> 
     <tr> 
      <th>Header 1</th> 
      <th>Header 2</th> 
     </tr> 
    </thead> 
</table> 

Bằng cách đó các tiêu đề được tạo ra. Nếu bạn nhấp vào nguồn xem trên trang mẫu, bạn sẽ thấy cùng một triển khai.

+0

oh, nghĩ rằng nó sẽ kéo động .. anyway này làm việc :) cổ vũ –

+0

@VinceLowe Tôi nghĩ rằng nó phụ thuộc vào cách dữ liệu được cấu trúc. Tôi đã sử dụng Datatables rộng rãi và tôi đã có cột hiển thị động một lần trong một thời gian. Ví dụ, nếu bạn sử dụng GridView (C#) và sau đó áp dụng datatables cho nó, nó sẽ lấy tiêu đề từ GridView. Ngoài ra, nếu bạn chỉ định tiêu đề của riêng mình, bạn có thể thêm bộ lọc (như trình đơn thả xuống hoặc hộp văn bản). – Drakkainen

+0

Tôi đã mã hóa cứng như trên, nhưng có vẻ như với tôi rằng bạn không cần phải đánh vần tiêu đề trong html ... đang đăng [này lại: tự động tạo tiêu đề] (http://alanhollis.com/datatables-net- năng động-cột-đề mục-ajax-yêu cầu /) với hy vọng hoặc là giúp một ai đó hoặc làm cho nó hoạt động tại một số điểm ... – bahmait

28

Nếu bạn đang đi qua trong dữ liệu dưới dạng một mảng của các đối tượng, sau đó bạn sẽ cần phải chỉ rõ tiêu đề của mỗi cột bằng tay:

data = this.SearchController.resultSet; 
this.$tableContainer.dataTable({ 
    data: data, 
    columns: [ 
    { 
     data: "H", 
     title: "Thickness" 
    }, 
    { 
     data: "InstanceId", 
     title: "Instance ID" 
    }] 
}); 

Lưu ý: đây sẽ không yêu cầu bạn chỉ định tiêu đề trong phần tử table của mình. Tất cả những gì bạn cần là một số trống rỗng <table> và thao tác này sẽ hoạt động. Tài liệu here.

+2

Đây phải là câu trả lời đúng. Có vẻ như nó phù hợp với mọi tình huống. – Veverke

+2

cảm ơn, tôi tự hỏi tại sao điều này không được đề cập cho ví dụ cụ thể trong tài liệu về datatables? Tôi đã dành 30 phút cố gắng sửa nó đọc tài liệu cho đến khi tôi nhận được phản hồi của bạn – george

+0

Cảm ơn bạn rất nhiều! Tôi đã cọ rửa các tài liệu về datatables cho điều này nhưng không thể tìm thấy nó. – lonesword

1

Dưới đây sẽ tạo ra tiêu đề động

$('#dtableid').DataTable({ 
    "aaData": [ 
    { 
     "abc": "123", 
     "xyz": 456 
    }, 
    { 
     "abc": "123", 
     "xyz": 456 
    } 
    ], 
    "aoColumns": [ 
    { 
     "mData": "abc", 
     "title": "ABC", 
     "bSortable": true 
    }, 
    { 
     "mData": "xyz", 
     "title": "XYZ", 
     "bSortable": true 
    } 
    ] 
});