2011-06-20 28 views
5

Làm cách nào để có thể nhận ID của mỗi hàng trong lưới, ngay cả trên các trang?Nhận tất cả các ID hàng trong jqGrid

getDataIDsgetRowData chỉ cung cấp ID của trang hiện tại.

Cảm ơn!

+1

Bạn không thể, vì các trang khác có thể chưa được tải. –

+1

Tôi không thích câu trả lời đó: ( –

+0

tốt, bạn không thể yêu cầu lưới dữ liệu mà nó không có, bạn có thể? Bạn cần phải hỏi điều duy nhất mà * không * có dữ liệu đó: Máy chủ của bạn. –

Trả lời

13

Chỉ có thể nếu bạn có lưới cục bộ (datatype:'local' hoặc có loadonce:true). Trong trường hợp tất cả các id bao gồm dữ liệu cho tất cả các trang đã được lưu trữ cục bộ. Trong trường hợp bạn có thể sử dụng thông số _index, thông số này sẽ được sử dụng thông thường cùng với một thông số khác được biết đến data. Với

var idToDataIndex = $("#list").jqGrid('getGridParam','_index'); 

bạn sẽ nhận được thông số _index. Nó là một đối tượng có các thuộc tính tất cả các id của lưới. Vì vậy, bạn có thể liệt kê các id bằng

var id; 
for (id in idToDataIndex) { 
    if (idToDataIndex.hasOwnProperty(id)) { 
     // id is the rowid. 
     // to get the data you can use 
     // mydata[idToDataIndex[id]] where 
     // var mydata = $("#list").jqGrid('getGridParam','data'); 
    } 
} 
+0

Xin chào Oleg, jqgrid của tôi có datatype: json và am đọc dữ liệu qua trình đọc json. tôi đã cho loadonce = true, thậm chí sau đó tôi cũng phải đối mặt với vấn đề này, nơi getRowData chỉ trả về id của trang hiện tại.Làm thế nào tôi có thể giải quyết vấn đề này? Cảm ơn sự giúp đỡ của bạn – user1447718

+0

@ user1447718: Có bạn có thể sử dụng '$ (" # list ") .jqGrid ('getGridParam', 'dữ liệu');' để lấy dữ liệu về * tất cả các trang *. Nếu không có cột chứa thông tin 'id' thì bạn có thể sử dụng' $ ("# list") .jqGrid ('getGridParam', '_index') 'để lấy tất cả các id và chỉ mục trong mảng' data' dữ liệu tương ứng với id. – Oleg

+1

cảm ơn Oleg. nhìn thấy điều kỳ lạ mặc dù trong jqgrid của tôi. tôi đã cho Datatype sau đây: 'json', loadonce: 'true', cellsubmit: 'clientArray'. dữ liệu được tải trong hai trang. nhưng khi tôi kiểm tra, tôi thấy TRs chỉ được tạo cho trang đầu tiên. tôi không thấy TRs của trang thứ hai. đó là lý do tại sao getRows không trả lại dữ liệu của trang thứ hai trong khi đang ở trang đầu tiên? – user1447718

0

Trong các phiên bản sau này, chúng sẽ xem xét bất kỳ tính năng lọc thanh công cụ nào có thể có. See Oleg's example here. Vì vậy, nếu bạn có một jqGrid (loadonce: true và/hoặc datatype: local), sau đây sẽ trả về tất cả các id hàng (được hiển thị trong trang hiện tại và hơn thế nữa) phù hợp với bộ lọc hiện tại.

var allIdsWithFiltering = grid.jqGrid('getGridParam', 'lastSelectedData'); 

Trả về một mảng đơn giản, không giống như câu trả lời gốc, trả về đối tượng có thuộc tính phải được liệt kê.

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