2012-07-19 28 views
7

câu hỏi đơn giản, khó có thể tìm thấy một câu trả lời:jqGrid: Làm thế nào để sử dụng multiselect trên các trang khác nhau

Nếu tôi cố gắng chọn một hàng theo chương trình, tôi sử dụng này:

$('#grid').jqGrid('setSelection', rowId); 

Vấn đề là nó chỉ chọn các hàng trên trang hiển thị hiện tại. Nếu hàngId ở trên một trang khác, nó sẽ không được chọn.

Thông tin khác: Mục tiêu của tôi là chọn nhiều hàng (trải trên nhiều trang) khi tải trang lần đầu tiên.

Cảm ơn, Rafael

PS: Anh chàng này có cùng vấn đề. Chưa có câu trả lời: jqgrid multiselect only selects rows on the current page, if paging is enabled. How to make it select rows across pages?

Trả lời

8

Phải, jqGrid sẽ chỉ chọn các hàng trên trang hiện tại. Để chọn các hàng khác, bạn cần duy trì danh sách ID đã chọn và chọn chúng theo cách thủ công.

Để làm điều này bạn cần phải thêm mã vào sự kiện loadComplete của bạn để tìm kiếm trên trang hiện tại và chọn bất kỳ của các hàng:

var ids = grid.jqGrid('getDataIDs'); 
for (var i = 0; i < ids.length; i++){ 
    if (selected[ids[i]] === true){ 
     grid.setSelection(ids[i], false); 
    } 
} 

Bạn cũng cần phải thêm mã để onSelectRowonSelectAll bạn sự kiện để điều chỉnh nội dung của selected khi người dùng chọn/bỏ chọn các hàng:

onSelectRow: function(rowid, status){ 
    selected[rowid] = status; 
    setSelectedDeviceCount(); 
}, 

onSelectAll: function(rowids, status){ 
    for (var i = 0; i < rowids.length; i++){ 
     selected[rowids[i]] = status; 
    } 
} 

Điều đó có hữu ích không?

+0

Cảm ơn rất nhiều! Thật không may mã không thể được sử dụng theo cách này (lỗi của tôi, không phải của bạn!), Nhưng ý tưởng tổng thể làm cho tôi sửa lỗi này! Cảm ơn! –

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