Hộp thoại chỉnh sửa của tôi có quá nhiều trường và do đó trở thành quá cao, vì vậy tôi phải đặt các trường cạnh nhau trong 2 cột. Tôi đã làm như sau:
Tôi đã thử nhiều cách khác nhau, bằng cách sử dụng wrap(), v.v. nhưng thấy rằng các giá trị không được đăng lên máy chủ nếu bạn sửa đổi cấu trúc bảng gốc. Vì vậy, tôi chỉ nhân bản các phần tử tr, đặt chúng trong các bảng mới, và giấu những cái cũ. Tôi đã không ẩn toàn bộ bảng, do đó xác thực sẽ vẫn hiển thị. Tôi đặt một onchange trên các yếu tố nhân bản để cập nhật những cái cũ. Điều này làm việc tuyệt vời. Parameter tableName là id phần tử jqgrid của bạn.
var splitFormatted = false;
function SplitFormatForm(tableName, add) {
if (!splitFormatted) {
splitFormatted = true;
$("#FrmGrid_" + tableName).append('<table><tr><td><table id="TblGrid_' + tableName + '_A" class="EditTable" border="0" cellSpacing="0" cellPadding="0" /></td><td><table id="TblGrid_' + tableName + '_B" class="EditTable" border="0" cellSpacing="0" cellPadding="0" /></td></tr></table>');
var cc = $("#TblGrid_" + tableName + "> tbody").children("tr").length;
var s = (cc/2) - 1;
var x = $("#TblGrid_" + tableName + "> tbody").children("tr");
var i = 0;
x.each(function (index) {
var e = $(this).clone();
var oldID = e.attr("id") + "";
var newID = oldID;
if (oldID.substring(0, 3) === "tr_") {
newID = "clone_" + oldID;
$(this).css("display", "none");
e.change(function() { $("#" + oldID + " > .DataTD > .FormElement").val($("#" + newID + " > .DataTD > .FormElement").val()); });
e.attr("id", newID);
if (i++ < s) {
$("#TblGrid_" + tableName + "_A").append(e);
}
else {
$("#TblGrid_" + tableName + "_B").append(e);
}
}
});
//This hack makes the popup work the first time too
$(".ui-icon-closethick").trigger('click');
var sel_id = "'new'";
if (!add) {
sel_id = jQuery('#'+tableName).jqGrid('getGridParam', 'selrow');
}
jQuery('#'+tableName).jqGrid('editGridRow', sel_id, { closeAfterAdd: true, width: 800, afterSubmit: function (response, postdata) { return [response.responseText == 'OK', response.responseText]; } });
}}
Gọi mã này trong editOptions của bạn như sau:
afterShowForm: function() { SplitFormatForm("SiteAccountsGrid", false); }
cảm ơn, nhưng có vẻ như nó không hoạt động :(, tôi đã cố gắng như thế này: ...).navGrid ('# Navid', {chỉnh sửa: true}, { editfunc: function (id) {alert (id);}, height: 600, reloadAfterSubmit: false, jqModal: đúng, closeOnEscape: true }); – Andrei
@Andrei: theo cách này, nó không thể hoạt động 'editfunc' hoặc' addfunc' là tùy chọn 'navGrid' và ** NOT ** là một phần của tham số' prmEdit'. Vì vậy, bạn nên thử '...) navGrid ('# navId', {chỉnh sửa: true, editfunc: function (id) {alert (id);}});' – Oleg
Cảm ơn, nó hoạt động tuyệt vời! – Andrei