Mi diálogo de edición tenía demasiados campos y así se convirtió en demasiado alto, así que tuve que poner los campos lado a lado en 2 columnas. Lo hice de la siguiente manera:
Intenté varias formas, usando wrap(), etc., pero descubrí que los valores no se publican en el servidor si modifica la estructura de la tabla original. Así que solo cloné los elementos tr, los puse en nuevas tablas y oculté los antiguos. No oculté toda la tabla, por lo que la validación seguirá siendo visible. Puse un cambio en los elementos clonados para actualizar los antiguos. Esto funciona genial Parámetro tableName es tu identificación de elemento jqgrid.
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]; } });
}}
Llame a este código en sus editOptions de la siguiente manera:
afterShowForm: function() { SplitFormatForm("SiteAccountsGrid", false); }
gracias, pero parece que no funciona :(, lo intenté así: ...).navGrid ('# Navid', {edición: true}, { editfunc: function (id) {alert (id);}, altura: 600, reloadAfterSubmit: falso, jqModal: true, closeOnEscape: verdadera }); – Andrei
@Andrei: de esta manera no puede funcionar 'editfunc' o' addfunc' son la opción de 'navGrid' y ** NO ** una parte del parámetro' prmEdit'. Entonces debería intentar '...). NavGrid ('# navId', {edit: true, editfunc: function (id) {alert (id);}});' – Oleg
¡Gracias, funciona genial! – Andrei