2008-09-17 43 views
10

Bao giờ muốn có một bảng kéo và thả HTML có thể sắp xếp trong đó bạn có thể sắp xếp cả hàng và cột? Tôi biết đó là điều tôi sẽ chết. Có rất nhiều danh sách có thể sắp xếp được, nhưng việc tìm kiếm một bảng có thể sắp xếp dường như không thể tìm thấy.Kéo và thả các bảng có thể sắp xếp HTML

Tôi biết rằng bạn có thể nhận được khá gần với các công cụ mà script.aculo.us cung cấp nhưng tôi gặp phải một số vấn đề liên quan đến trình duyệt với họ.

Trả lời

4

Tôi đã sử dụng dhtmlxGrid trong quá khứ. Trong số những thứ khác, nó hỗ trợ kéo và thả các hàng/cột, phân loại phía máy khách (chuỗi, số nguyên, ngày tháng, tùy chỉnh) và hỗ trợ đa trình duyệt.

Trả lời nhận xét: Không, không tìm thấy gì tốt hơn - chỉ cần chuyển từ dự án đó. :-)

+0

Bạn đã sử dụng nó trong quá khứ .. Điều đó có nghĩa là bạn đã tìm thấy một cái gì đó tốt hơn;) Tôi đã dành một chút thời gian đào sâu vào nó và nó có vẻ là tất cả mọi thứ tôi muốn. Cảm ơn đã giúp đỡ! – JHollanti

0

Làm thế nào về sorttable? Điều đó dường như phù hợp với yêu cầu của bạn một cách độc đáo. Nó là khá dễ sử dụng - tải các tập tin Javascript sorttable, sau đó, cho mỗi bảng bạn muốn nó làm cho sắp xếp, áp dụng class = "sortable" để < bảng > tag.

Nó sẽ ngay lập tức hiểu cách sắp xếp hầu hết các loại dữ liệu, nhưng nếu có điều gì đó không, bạn có thể thêm khóa sắp xếp tùy chỉnh để cho biết cách sắp xếp. Các tài liệu giải thích tất cả khá tốt.

+0

Ngoại trừ việc không có thao tác kéo và thả. Tôi cần để có thể sắp xếp bảng theo cách tôi muốn nó từng hàng, và không phải bởi một số quy tắc. – JHollanti

+0

Ah, xin lỗi, xấu của tôi. –

5

Tôi khuyên bạn nên Sortables trong jQuery. Bạn có thể sử dụng nó trên các mục danh sách hoặc khá nhiều thứ, kể cả các bảng.

jQuery rất thân thiện với trình duyệt và tôi luôn khuyên bạn nên sử dụng nó.

+1

Tôi không thể nhận được jQuery sắp xếp để làm việc trong một bảng. Nó chỉ kéo toàn bộ bảng xung quanh hoặc các ô riêng lẻ. Nhưng không có hàng dựa trên kéo. – JHollanti

0

Nếu bạn không nhớ Java, có một thư viện rất tiện dụng cho GWT được gọi là GWT-DND xem bản demo trực tuyến để xem mức độ mạnh mẽ của nó.

+0

Tôi không nhớ Java nhưng ai đó có thể :) Nhưng nghiêm túc, Java cảm thấy hơi nặng. – JHollanti

+4

Sử dụng Java vì bạn muốn một bảng có thể sắp xếp có vẻ như sử dụng búa tạ để búa vào một vít. –

1

Hầu hết các khung công tác (Yui, MooTools, jQuery, Prototype/Scriptaculous, v.v.) đều có chức năng danh sách có thể sắp xếp. Làm một ít nghiên cứu vào mỗi và chọn một trong những phù hợp với nhu cầu của bạn nhất.

18

Tôi đã sử dụng plugin có thể sắp xếp của Giao diện người dùng jQuery với kết quả tốt. Markup tương tự như sau:

<table id="myTable"> 
<thead> 
<tr><th>ID</th><th>Name</th><th>Details</th></tr> 
</thead> 
<tbody class="sort"> 
<tr id="1"><td>1</td><td>Name1</td><td>Details1</td></tr> 
<tr id="2"><td>2</td><td>Name1</td><td>Details2</td></tr> 
<tr id="3"><td>3</td><td>Name1</td><td>Details3</td></tr> 
<tr id="4"><td>4</td><td>Name1</td><td>Details4</td></tr> 
</tbody> 
</table> 

và sau đó trong javascript

$('.sort').sortable({ 
    cursor: 'move', 
    axis: 'y', 
    update: function(e, ui) { 
     href = '/myReorderFunctionURL/'; 
     $(this).sortable("refresh"); 
     sorted = $(this).sortable("serialize", 'id'); 
     $.ajax({ 
      type: 'POST', 
      url: href, 
      data: sorted, 
      success: function(msg) { 
       //do something with the sorted data 
      } 
     }); 
    } 
}); 

POSTS Đây là một phiên bản serialized ID của mục vào URL nhất định. Hàm này (PHP trong trường hợp của tôi) sau đó cập nhật các đơn đặt hàng của các mục trong cơ sở dữ liệu.

+0

Trong trường hợp nó giúp người khác - tôi gặp vấn đề với ví dụ - lệnh 'serialize' đã trả về null. Nó hoạt động khi tôi thay đổi ID, theo câu trả lời của Lathan [ở đây] (http://stackoverflow.com/a/966303/1714). Không chắc liệu nó có liên quan đến phiên bản của [tag: jquery] hay không – Hobo

3

Câu trả lời của David Heggie là hữu ích nhất đối với tôi. Nó có thể ngắn gọn hơn một chút:

làm việc cho tôi, với cùng một đánh dấu.

0

Nếu bạn tìm thấy.serialize() trả về null trong giải pháp David Heggie của sau đó thiết lập các giá trị id cho TRS là 'ID_1' thay vì chỉ đơn giản là '1'

Ví dụ:

<tr id="id_1"><td>1</td><td>Name1</td><td>Details1</td></tr> 
<tr id="id_2"><td>2</td><td>Name1</td><td>Details2</td></tr> 
<tr id="id_3"><td>3</td><td>Name1</td><td>Details3</td></tr> 
<tr id="id_4"><td>4</td><td>Name1</td><td>Details4</td></tr> 

trên sẽ serialize như "id [] = 1 & id [] = 2 & id [] = 3 "

Bạn có thể sử dụng '=', '-' hoặc '_' thay vì '_'. Và bất kỳ từ nào khác ngoài "id".

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