Parece que hay muchas soluciones que están muy cerca de abordar mi problema, pero de las docenas y docenas de preguntas que he vertido no parece abordar exactamente lo que hago. estoy tratando de hacer Aunque he visto casi la misma pregunta sin una respuesta. He intentado tantas combinaciones de opciones y funciones en vano.Añadiendo una nueva fila a jqGrid utilizando el formulario modal en el cliente solamente
Quiero usar el formulario modal para agregar una nueva fila con los valores ingresados a jqGrid, pero no quiero que se publique en el servidor al enviar. Deseo publicar eventualmente en el servidor, pero solo después de que el usuario del cliente haya realizado una edición adicional (si es necesario) en la (s) fila (s) agregada (s) desde el formulario modal. No quiero que se guarden filas en la base de datos remota hasta que el cliente haya realizado algunas modificaciones que, a su vez, actualicen dinámicamente otras columnas. Una vez que se valida un determinado estado de valores, se muestra un botón Guardar y las filas de la cuadrícula se pueden publicar en el servidor. A menos que se cumpla esta condición validada, la (s) fila (s) no se enviarán a la base de datos. Tengo una serie de jqGrids en uso en otra parte de mi aplicación que publican los datos de la nueva fila de un formulario modal enviado pero esta cuadrícula intento lograr algo diferente con el cliente que no involucra al servidor de inmediato. Me gusta la interfaz más intuitiva de la forma modal para la entrada inicial de valores con el usuario cliente y luego edito los campos de la nueva fila si es necesario, que es lo que ha requerido mi pregunta: ¿puedo enviar el formulario como una nueva fila solo sin cualquier acción de publicación para el servidor que ocurre?
Vi en el recurso jqGrid Wiki un comentario hecho por un usuario que decía si "clientArray" es el valor ingresado para usar la opción de envío modal de Grids "editurl:" clientArray "que la forma modal no escupía" No se establece un "mensaje de URL" pero todavía lo hace y no se agrega una nueva fila a la cuadrícula. He hecho que el tipo de datos Grid sea un "tipo de datos:" clientSide '"local pero obtengo el mismo mensaje de error" No se estableció una URL " La secuencia de comandos es bastante sencilla para el formulario modal invocado por un botón personalizado de la siguiente manera:
(Las opciones "footerrow, userDataOnFooter y altRows" se incluyen como parte de la actualización de valores en un pie de página resumen que está relacionado con edición realizada sobre las celdas de la (s) nueva (s) fila (s) que se agregan a través del formulario modal)
jQuery("#grid_test").jqGrid({
url:'/grid_test_url.asp?id=' + vId,
datatype: "clientSide",
colNames: ['ID','Col 1', 'Col 2', 'Col 3','Col 4'],
colModel: [
{name:'id',index:'id',width:90,align:"center",editable:true,editoptions:{size:25}, formoptions: {...}, editrules: {...}},
{name:'col1',index:'col1',width:130,align:"right",editable:true,editoptions:{size:25}, formoptions: {}, editrules: {}},
{name:'col2',index:'col2',width:130,align:"right",editable:true,editoptions:{size: 25}, formoptions: {}, editrules: {}},
{name:'col3',index:'col3',width:130,align:"right",editable: true,editoptions:{size:25}, formoptions: {}, editrules: {}},
{name:'col4',index:'col4',width:130,align:"right",editable:true,editoptions:{ size: 25 }, formoptions: {}, editrules: {}}
],
rowNum:5,
rowList:[5,10,20],
pager: '#pgrid_test',
toolbar: [true, "top"],
editurl: '', //not sure what would go here to block attempted post by the Submit action of the modal form
width: 500,
sortname: 'id',
viewrecords: true,
sortorder: "asc",
multiselect: true,
cellEdit: true,
caption: "Grid Test Add New Row",
footerrow: true,
userDataOnFooter: true,
altRows: true
})
jQuery("#grid_test").jqGrid('navGrid', '#pgrid_test', { add: false, edit: false, del: false })
//append custom button
$("#t_grid_test").append("<input type='button' class='add' value='Add New Row' style='height:20px; color:green; font-size:11px;' />");
$("input.add", "#t_grid_test").click(function() {
jQuery("#grid_test").jqGrid('editGridRow', "new", {
jqModal: true,
savekey: [true, 13],
navkeys: [true, 38, 40],
bottominfo: "Fields marked with (*) are required. ",
addCaption: 'New Row Values',
width: 300,
dataheight: 200,
recreateForm: true,
//checkOnUpdate: true,
//checkOnSubmit: true,
//reloadAfterSubmit: true,
closeOnEscape: true,
closeAfterAdd: true
//clearAfterAdd: true
})
});
Espero que esto sea razonablemente claro. Parece que debería ser bastante simple agregar una fila usando el formulario modal sin que se publique inmediatamente en el servidor, pero no puedo encontrar la solución. Y tenga paciencia si no hago clic con prontitud en los íconos para obtener el crédito adecuado para las respuestas, pero lo haré cuando sepa en qué hacer clic, por lo que le aconsejo que lo haga. :) Muchas gracias de antemano. Jerry
Gracias usted @Oleg. –
@Frank: ¡De nada! – Oleg
@Oleg - Exactamente lo que necesitaba. Desafortunadamente, parece que ya no funciona con jqGrid 4.6 o 4.7. El formulario no se restablece y luego los errores en "Cliente requerido", incluso si hay datos en el formulario, – MSquared