2011-01-17 33 views
8

Tôi nhận thấy trong bản demo jqgrid (http://www.trirand.com/blog/jqgrid/jqgrid.html> Nâng cao> Đa lựa chọn) chỉ có các hàng (hiển thị) trên trang hiện tại được chọn nếu phân trang được bật.multifelect jqgrid chỉ chọn các hàng trên trang hiện tại, nếu phân trang được bật. Làm thế nào để làm cho nó chọn hàng trên các trang?

Mọi mẹo để làm cho nó hoạt động trên nhiều trang. Hoặc bất kỳ giải pháp thay thế nào khác?

Trả lời

3

Tôi biết câu hỏi này là loại bụi, nhưng gần đây tôi đã có một nhu cầu cho chức năng này và tìm thấy những gì tôi xem xét một cách sạch sẽ hơn nhiều để làm điều đó.

Thay vì đính kèm sự kiện vào từng hộp kiểm, tại sao không sử dụng các sự kiện onSelectRowonSelectAll của jqGrid? Khi một hàng được chọn, hãy kiểm tra xem danh sách các hàng đã chọn của chúng tôi có bao gồm hàng này không (dựa trên id). Thêm nó vào danh sách nếu nó không có và đã được chọn, loại bỏ nó nếu nó đã có và không còn được chọn. Nếu tất cả các hàng được chọn, hãy lặp qua chúng.

var $grid = jQuery("#myGrid"); 
var updateIdsOfSelectedRows = function (id, isSelected) { 
    var contains = idsOfSelectedRows.contains(id); 
    if (!isSelected && contains) { 
     for(var i=0; i<idsOfSelectedRows.length; i++) { 
      if(idsOfSelectedRows[i] == id) { 
       idsOfSelectedRows.splice(i, 1); 
       break; 
      } 
     } 
    } 
    else if (!contains) { 
     idsOfSelectedRows.push(id); 
    } 
}; 

$grid.jqGrid({ 
    .... 
    onSelectRow: function(rowid, status){ 
     updateIdsOfSelectedRows(rowid, status); 
    }, 
    onSelectAll: function (aRowids, status) { 
     var i, count, id; 
     for (i = 0, count = aRowids.length; i < count; i++) { 
      id = aRowids[i]; 
      updateIdsOfSelectedRows(id, status); 
     } 
    }, 
    .... 
)}; 

Hy vọng điều này sẽ giúp người khác tìm kiếm giải pháp.

0

Tôi giả sử bạn muốn chọn một số hàng trong một trang, sau đó chuyển đến một trang khác, có thể chọn một số hàng khác và có tất cả các lựa chọn đó vẫn tồn tại.

Bạn sẽ phải xử lý các sự kiện lựa chọn trên mỗi hộp kiểm. Đính kèm trình xử lý sự kiện vào each $("#cb_my_grid") và duy trì một loạt các mục đã chọn. Sau đó, khi bạn cần dữ liệu (có thể khi trang được gửi), bạn có thể gửi các giá trị trong mảng.

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