Disclaimer: tôi sử dụng YUI DataTable rất nhiều mà không phải đau đầu trong một thời gian dài . Nó mạnh mẽ và ổn định. Đối với nhu cầu của bạn, bạn có thể sử dụng một suports ScrollingDataTable
- cuộn x
- cuộn y
- xy-cuộn
- Một cơ chế tổ chức sự kiện mạnh mẽ
Đối với những gì bạn cần, tôi nghĩ rằng bạn muốn là một bảngScrollEvent . API của nó nói
Được kích hoạt khi DataTable cuộn cố định có cuộn.
Vì mỗi DataTable sử dụng DataSource, bạn có thể theo dõi dữ liệu của nó thông qua bảngScrollEvent cùng với kích thước vòng lặp kết xuất để đưa vào ScrollingDataTable của bạn theo nhu cầu của bạn.
Kết xuất kích thước vòng lặp cho biết
Trong trường hợp DataTable của bạn cần hiển thị toàn bộ một tập hợp dữ liệu rất lớn, cấu hình renderLoopSize có thể giúp quản lý kết xuất DOM của trình duyệt để luồng UI không bị khóa trên các bảng rất lớn . Bất kỳ giá trị nào lớn hơn 0 sẽ khiến kết xuất DOM được thực thi trong chuỗi setTimeout () hiển thị số lượng hàng được chỉ định trong mỗi vòng lặp. Giá trị lý tưởng nên được xác định cho mỗi lần thực hiện vì không có quy tắc cứng và nhanh, chỉ có hướng dẫn chung:
- Theo mặc định renderLoopSize là 0, vì vậy tất cả các hàng được hiển thị trong một vòng lặp. Một renderLoopSize> 0 thêm chi phí để sử dụng chu đáo.
- Nếu bộ dữ liệu của bạn đủ lớn (số lượng hàng X số độ phức tạp định dạng của Cột X) mà người dùng gặp phải độ trễ trong kết xuất trực quan và / hoặc nó khiến tập lệnh bị treo, hãy xem xét cài đặt renderLoopSize .
- Một renderLoopSize dưới 50 có lẽ không đáng. Một renderLoopSize> 100 có lẽ tốt hơn.
- Một tập dữ liệu có thể không được coi là đủ lớn trừ khi nó có hàng trăm và hàng trăm hàng.
- Việc có renderLoopSize> 0 và <tổng số hàng sẽ khiến bảng được hiển thị trong một vòng lặp (giống như renderLoopSize = 0) nhưng nó cũng kích hoạt chức năng như phân loại hàng sau kết xuất được xử lý từ một luồng setTimeout riêng biệt.
Ví dụ
// Render 100 rows per loop
var dt = new YAHOO.widget.DataTable(<WHICH_DIV_WILL_STORE_YOUR_DATATABLE>, <HOW YOUR_TABLE_IS STRUCTURED>, <WHERE_DOES_THE_DATA_COME_FROM>, {
renderLoopSize:100
});
<WHERE_DOES_THE_DATA_COME_FROM> chỉ là một Nguồn dữ liệu duy nhất . Nó có thể là một JSON, JSFunction, XML và thậm chí là một phần tử HTML duy nhất
Ở đây bạn có thể thấy một hướng dẫn đơn giản, được cung cấp bởi tôi. Xin lưu ý rằng không có trình cắm DATA_TABLE nào khác hỗ trợ nhấp chuột đơn và kép cùng một lúc. YUI DataTable cho phép bạn. Và hơn nữa, bạn có thể sử dụng nó ngay cả với JQuery mà không phải đau đầu
Một số ví dụ, bạn có thể thấy
Hãy hỏi về bất cứ điều gì khác mà bạn muốn về YUI DataTable.
Trân trọng,