2011-10-20 24 views
6

Làm cách nào để lấy đối tượng hàng trên hàng được chọn trong jqGrid? Tôi cần đối tượng thực tế, không phải là giá trị ô. Tôi đã đi qua các tài liệu hướng dẫn nhưng không thể tìm thấy một phương pháp mà sẽ cho tôi đối tượng hàng. vì tôi sử dụng các trình định dạng tùy chỉnh, cellValue sẽ không hoạt động.jqGrid Row Object trong onSelectRow

Trả lời

9

Nếu bạn triển khai custom formatter và muốn nhận giá trị ô tương ứng với getCell hoặc getRowData, bạn phải triển khai chức năng unformat.

Không rõ ý bạn là gì dưới "Tôi cần đối tượng thực tế, không phải giá trị ô". Nó cũng không rõ ràng mà datatype bạn sử dụng, cho dù bạn sử dụng tùy chọn loadonce: true hay không và nếu bạn tải dữ liệu từ máy chủ trong đó định dạng dữ liệu sẽ được đăng lên máy chủ.

Nếu bạn sử dụng datatype: 'local' hoặc sử dụng loadonce: true thông số nội bộ data_index sẽ được lấp đầy. Để có được dữ liệu thô từ lưới điện bằng cách rowid bạn có thể sử dụng

var rowData = this.p.data[this.p._index[rowid]] 

hoặc

var grid = $(this), 
    localdata = grid.jqGrid('getGridParam', 'data'), 
    indexes = grid.jqGrid('getGridParam', '_index'), 
    rowData = localdata[indexes[rowid]]; 

Nếu bạn không sử dụng hoặc sử dụng datatype: 'local'loadonce: true và tải dữ liệu từ máy chủ duy nhất bạn có thể lưu các đối tượng đại diện cho dữ liệu từ phản hồi của máy chủ trong một biến (trong một đối tượng). Trình xử lý sự kiện loadComplete có một tham số data là dữ liệu thô được đăng từ máy chủ. Vì vậy, bạn có thể lưu dữ liệu mà bạn cần trong một đối tượng (trong một bản đồ mà sẽ nhận được đối tượng yut bởi rowid) và sử dụng nó bên trong xử lý sự kiện onSelectRow.

+0

Cảm ơn vì điều này, nó đã chỉ cho tôi đúng hướng – SystemParadox

+1

@SystemParadox: Bạn được hoan nghênh! Tôi khuyên bạn nên kiểm tra thêm phương thức 'getLocalRow'. Xem [câu trả lời] (http://stackoverflow.com/a/9145342/315935) hoặc [một số khác] (http://stackoverflow.com/a/10362294/315935) để biết một số ví dụ mã nhỏ và thông tin bổ sung. [Mã nguồn] (https://github.com/tonytomov/jqGrid/blob/v4.3.2/js/grid.base.js#L3494-3505) của phương pháp này rất nhỏ và tôi khuyên bạn nên đọc nó . – Oleg

+0

Tôi phải thừa nhận, tôi luôn luôn bỏ qua nó, nhưng việc lưu trữ dữ liệu để sử dụng sau này trên loadComplete là một chức năng rất có giá trị. Vì tôi không bao giờ sử dụng datatype: 'local' hoặc loadonce: true. Tôi thậm chí tự hỏi tại sao nó không được lưu trữ theo mặc định trong một số loại thuộc tính 'rawdata'. Dù sao cảm ơn đã chỉ nó ra Oleg. +1 – Steven

3

trong dự án của tôi:

ondblClickRow : function(rowid,iRow,iCol,e) { 
    $($("#completeDetail").getInd(rowid,true)).find(":first").click(); 
} 

này sẽ giải quyết hàng tăng không tìm thấy tìm kiếm hàng

sử dụng chức năng này ->getInd(rowid,rowcontent).

Phương thức này trả về chỉ mục của hàng trong bảng lưới được chỉ định bởi id=rowid khi rowcontent được đặt thành false (mặc định). Nếu rowcontent được đặt thành true, nó trả về đối tượng hàng nhập. Nếu không thể tìm thấy rowid, hàm trả về false.