Nói chung việc sử dụng userData
là khá đơn giản. jqGrid cung cấp cho bạn hỗ trợ gửi từ máy chủ bất kỳ dữ liệu bổ sung nào sẽ được lưu cùng với dữ liệu jqGrid. Vì vậy, nếu jqGrid phân tích dữ liệu được trả về từ máy chủ thì nó chỉ tìm kiếm userdata
(không cho userData
!!!) và lưu nằm trong tham số nội bộ userData
.
{ "total":25,
"page":1
"records":107,
"userdata": {"foo": "bar"},
"rows": [...] }
Hãy cẩn thận: thuộc tính mặc định trong các dữ liệu đầu vào phải được userdata
và KHÔNGuserData
như bạn đang có. Bạn có thể ghi đè tên mặc định của thuộc tính đầu vào jsonReader: {userdata: "userData"}
hoặc jsonReader: {userdata: "myData"}
nếu bạn sử dụng userData
hoặc myData
làm tên thuộc tính với additional data của mình.
Một từ cách sử dụng tiêu chuẩn là userData
là dành cho displaying of the footer trong jqGrid. Bạn có thể sử dụng dữ liệu cho bất kỳ đề xuất nào khác của bạn. Trong another answer, nó được hiển thị cách sử dụng userData
để chọn một số hàng/hàng trực tiếp sau khi tải dữ liệu từ máy chủ.
Nếu bạn sử dụng tham số loadonce:true
, việc sử dụng userData
sẽ phức tạp hơn một chút vì sau lần tải đầu tiên dữ liệu từ tham số userData
sẽ bị xóa, vì vậy bạn phải lưu ở đó trong đối tượng bên ngoài.
Nguyên nhân bạn có thể truy cập userData
chỉ với jQuery("#grid").getGridParam('userData')
sau khi dữ liệu được tải. Vì vậy, bạn nên làm điều này bên trong của loadComplete xử lý sự kiện hoặc sau đó. Bằng cách bên trong của loadComplete xử lý sự kiện, bạn có thể truy cập vào tất cả dữ liệu được gửi cho bạn từ máy chủ thông qua thông số data
của sự kiện loadComplete. Vì vậy, bạn có thể đọc bất kỳ dữ liệu bổ sung nào khác và lưu ở đâu đó.
Cảm ơn.Trong trường hợp bất cứ ai đọc điều này sau, tóm tắt là khi nói về một GridParam nó 'userData', nếu không nó là' userdata'. Đọc 'userdata' trong trình xử lý sự kiện' loadComplete'. Để đặt 'postData' với' userdata' làm điều này: 'loadComplete: function (data) {jQuery (" # ticketlist "). SetGridParam ({postData: {foo2: data.userdata.foo}});}' – royco
@Slack : Bạn cũng có thể sử dụng 'jQuery (" # grid ") getGridParam ('userData')' bên trong 'loadComplete' như' loadComplete: function() {jQuery ("# ticketlist"). SetGridParam ({postData: {foo2: jQuery ("# lưới"). getGridParam ('userData'). foo}});} '. Điều quan trọng là phải hiểu rằng trong dữ liệu gửi từ máy chủ người ta phải đặt 'userdata' và dữ liệu sẽ được lưu trong tham số' userData' của jqGrid. Vì vậy, nó có thể được truy cập máng 'getGridParam ('userData')'. Nhưng điều quan trọng nhất là chương trình của bạn hoạt động và có thể sử dụng 'userdata' /' userData'. :-) – Oleg
Tôi đã sử dụng userData thay vì userdata trong trình tạo json và tôi đã phát điên, cảm ơn rất nhiều! +1 – Neo