2011-06-19 28 views
15

Tôi có một biểu mẫu, để tìm kiếm một đăng ký. Biểu mẫu này hiển thị thông tin trong một số jQuery Dialog và bên trong hộp thoại, tôi đang sử dụng Datatables (Có, bên trong hộp thoại tôi có toàn bộ bảng). Tôi đang tạo ra TR và TD một cách linh hoạt với PHP, và sau đó, PHP dán chuỗi vào HTML. Nhưng, khi hộp thoại được hiển thị tôi nhận được lỗi này:"oCol is Undefined" Sử dụng Datatables và Hộp thoại jQuery Ui

oCol is undefined: oCol.fnSetData(oData, val);

Tôi đang cố gắng nó trong Firefox và Chrome và đó là điều tương tự. Ngoài ra tôi đã tìm kiếm trong http://www.datatables.net, và tôi loại bỏ một 'bảng không đúng định dạng'. Tôi không biết tôi đang làm gì sai.

Bạn có thể giúp tôi giải quyết vấn đề này không?

Đây là JS Khối tôi:

 <script type="text/javascript" language="javascript" src="lib/jQuery/jquery-1.6.1.js"></script> 
     <script type="text/javascript" language="javascript" src="lib/jQuery Ui/js/jquery-ui-1.8.13.custom.min.js"></script> 
     <script type="text/javascript" language="javascript" src="lib/Datatables/DataTables-1.8.0/media/js/jquery.dataTables.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function(){ 
       $("#results").dialog({ 
        title: "Results", 
        width: 900, 
        height: 500, 
        open: function(event, ui){ 
         $("#tRes").dataTable({ 
          "bPaginate": true, 
          "bLengthChange": true, 
          "bFilter": true, 
          "bSort": true, 
          "bInfo": true, 
          "bAutoWidth": true 
         }); 
        } 
       }); 
      }); 
     </script> 

Đây là Bảng của tôi (Với PHP Snippet):

<div id="results"> 
    <table id="tRes"> 
     <thead> 
      <tr> 
       <th>ID</th> 
       <th>Name</th> 
       <th>State</th> 
       <th>Address</th> 
      </tr> 
     </thead> 
     <tbody> 
      <?php 
       echo $rows; 
      ?> 
     </tbody> 
    </table> 
</div> 

Cảm ơn trước.

Trả lời

8

Bạn đã cố gắng thiết lập Cột của bạn như thế này:

    $("#tRes").dataTable({ 
         "bPaginate": true, 
         "bLengthChange": true, 
         "bFilter": true, 
         "bSort": true, 
         "bInfo": true, 
         "bAutoWidth": true, 
        "aoColumns": [ 
             null, 
             null //put as many null values as your columns 

        ] 
        }); 

Nếu điều này vẫn không làm việc, bạn có thể xin vui lòng gửi được tạo ra html quá? Một điều bạn có thể xem xét là khởi tạo bảng trên document.ready và không chỉ khi bạn mở hộp thoại, nhưng tôi không nghĩ rằng đó là vấn đề ở đây.

+0

Có, bạn nói đúng. Điều này giải quyết được vấn đề. Cảm ơn bạn (2 tháng sau) –

+10

Tại sao điều này lại cần thiết? –

+2

Đây chỉ là giải pháp nếu bạn có nhiều tiêu đề hơn so với các ô liên tiếp hoặc ngược lại, giải pháp chính xác là giải pháp thugsb. mặc dù nó có thể khắc phục vấn đề ở bàn tay, nó nhô ra trên các vết nứt. – Martin

20

Điều này có thể xảy ra do bảng của bạn không được cấu trúc chính xác. Hãy chắc chắn để có thead và tbody. Tôi đã có lỗi này, và một khi tôi thêm thead và tbody nó đã biến mất. Cài đặt của tôi không giống với cài đặt trong câu trả lời khác - tôi không chắc tại sao cài đặt đó lại hoạt động, vì nó không dành cho tôi.

table 
    thead 
    tr 
     th`s 
    tbody 
    tr`s 
     td`s 
+5

Điều này.Tôi chạy vào điều này khi tôi thêm một cột trong cơ thể nhưng không thêm một thứ cho nó. – DGM

+0

Đó là !! http://datatables.net/forums/discussion/7488/ocolumn-is-undefined/p1 – gavenkoa

+0

@DGM bạn đã đóng đinh nó! –

0

$ ("# Tres") DataTable ({ "bPaginate":. Đúng, "bLengthChange": đúng, "bFilter": đúng, "bSort": đúng, "bInfo" : true, "bAutoWidth": true, });

Xóa mã này khỏi trang của bạn và kiểm tra cú pháp của các giá trị cài đặt của hộp văn bản sau đó nó sẽ hoạt động tốt.

2

Các jQuery Plugin DataTables đòi hỏi số phần tử trong <tbody> thẻ trận đấu số <th> yếu tố trong thẻ <thead> bảng.

+0

cảm ơn và +1, nó cũng giúp tôi. – Abhishek

Các vấn đề liên quan