2010-11-20 30 views
14

Tôi thấy rằng trong jqGrid plugin cho JQuery tôi có thể thêm hàng động, nhưng tôi có thể làm tương tự với các cột không? Nếu có một bảng đơn giản, tôi muốn làm điều này bằng tay, nhưng jqGrid lưu trữ thông tin bảng trong rất nhiều div.jqGrid thêm cột mới

+0

Và nơi lưới của bạn sẽ mất dữ liệu cho mới này cột? – griZZZly8

+0

@ grizzzly8 nó phải trống (các trường dữ liệu có thể chỉnh sửa). – Ockonal

Trả lời

31

Không thể thêm cột vào jqGrid động. Bạn phải tạo lại toàn bộ lưới với colModel có thêm một cột nữa. Nếu bạn sử dụng riêng biệt colNames, thì kích thước của mảng cũng phải được tăng lên. Bạn có thể sử dụng GridDestroy ví dụ để hủy lưới hiện có. Việc sử dụng jQuery.Remove hoặc jQuery.Empty thay thế cũng có thể.

CẬP NHẬT: Dường như với tôi rằng GridUnload là tốt hơn cho mục đích của bạn. Tôi đã tạo small demo minh họa cách người ta có thể tạo lại một mạng lưới. Để có thể sử dụng GridUnload hoặc GridDestroy bạn phải xác minh rằng bạn bao gồm grid.custom.js trong dự án của mình (nếu bạn sử dụng phiên bản dành cho nhà phát triển của jqGrid) hoặc bạn đã chọn "Tùy chỉnh" "Phương thức cộng" trên trang jqGrid download.

CẬP NHẬT 2: Người ta có thể sử dụng phương thức addColumn có thể tải xuống từ here (xem jQuery.jqGrid.addColumn.js). Phương pháp vẫn đang trong giai đoạn beta. Người ta có thể tìm thấy một số bản demo trong đó cho thấy làm thế nào để sử dụng phương pháp here (xem addColumnX.htm ví dụ).

+0

Cảm ơn, nhưng tôi không thể tìm cách sử dụng GridDestroy. Bạn có thể giúp tôi với một ví dụ nhỏ không? 'jQuery (" # list ") .jqGrid ('GridDestroy');' nói rằng hàm không xác định (GridDestroy) – Ockonal

+1

@Ockonal: Tôi đã cập nhật câu trả lời của mình và bao gồm một bản trình diễn nhỏ. – Oleg

+0

@Oleg, Cảm ơn bạn rất nhiều. Một lần nữa, bạn đã tiết kiệm thời gian của tôi trên jqgrid. +1. – vissu

4

chỉ cần sử dụng

$("#gridid").jqGrid('GridUnload'); 

nó sẽ dỡ bỏ lưới hoàn toàn và sẽ sẵn sàng để tải lại với các cột và dữ liệu mới.

+1

Trong phiên bản mới hơn, tính năng này không hoạt động nữa. Sử dụng điều này để dỡ bỏ jqGrid: $ .jgrid.gridUnload ('# list'); – tudor

-1

Bạn có thể dễ dàng thiết lập các mô hình cột mới và tải lại lưới:

var newColModel = $("#myGrid").jqGrid("getGridParam", "colModel").concat({ /* new column attributes */ }); 
$("#myGrid").jqGrid("setGridParam", {colModel: newColModel}).trigger("reloadGrid"); 
0

rownumbers: đúng, và rownumWidth: 25 (mặc định)

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