Es scheint viele Lösungen zu geben, die meinem Problem sehr nahe kommen, aber von den Dutzenden von Fragen, die ich durchforstet habe, scheint keine einzige genau das zu treffen, was ich zu tun versuche. Obwohl ich gesehen habe, dass fast die gleiche Frage gestellt wurde, ohne dass es eine Antwort gab. Ich habe so viele Kombinationen von Optionen und Funktionen ausprobiert, ohne Erfolg.
Ich möchte das modale Formular verwenden, um eine neue Zeile mit den eingegebenen Werten zum jqGrid hinzuzufügen, aber ich möchte nicht, dass es nach dem Absenden an den Server gesendet wird. Ich möchte schließlich auf dem Server posten, aber erst, nachdem der Client-Benutzer zusätzliche Bearbeitung (falls erforderlich) auf der Zeile (n) aus dem modalen Formular hinzugefügt durchgeführt hat. Ich möchte nicht, dass Zeilen in der entfernten Datenbank gespeichert werden, bis der Kunde einige Bearbeitungen vorgenommen hat, die wiederum andere Spalten dynamisch aktualisieren. Sobald ein bestimmter Status der Werte validiert ist, wird eine Schaltfläche "Speichern" angezeigt, und die Rasterzeile(n) kann/können auf den Server übertragen werden. Solange diese Bedingung nicht erfüllt ist, werden die Zeilen nicht an die Datenbank übermittelt. Ich habe eine Reihe von jqGrids in Verwendung an anderer Stelle in meiner App, die die neuen Zeilendaten eines übermittelten modalen Formulars posten, aber mit diesem Grid versuche ich, etwas anderes mit dem Client zu erreichen, das nicht sofort den Server involviert. Ich mag die intuitivere Schnittstelle des modalen Formulars für die anfängliche Eingabe von Werten mit dem Client-Benutzer dann Inline-Bearbeitung der Felder der neuen Zeile, wenn erforderlich, was meine Frage erforderlich gemacht hat: kann ich das Formular als eine neue Zeile nur ohne Posting-Aktion auf dem Server auftretende senden?
Ich habe in der jqGrid-Wiki-Ressource einen Kommentar eines Benutzers gesehen, der sagte, dass, wenn "clientArray" der Wert ist, der für die Verwendung der modalen Grid-Formularübermittlungsoption "editurl: "clientArray", dass das modale Formular nicht die Meldung "No URL is set" ausspuckt, aber das tut es immer noch und eine neue Zeile wird dem Grid nicht hinzugefügt. Ich habe das Raster Datentyp als eine lokale "Datentyp: 'clientSide'" gemacht, aber die gleiche "Keine URL ist gesetzt" Fehlermeldung erhalten. Das Skript ist ziemlich einfach für das modale Formular, das durch eine benutzerdefinierte Schaltfläche wie folgt aufgerufen wird:
(Die Optionen "footerrow, userDataOnFooter und altRows" sind Teil der Werte, die in einer zusammenfassenden Fußzeile aktualisiert werden, die mit der Bearbeitung der Zellen der neuen Zeile(n) zusammenhängt, die über das modale Formular hinzugefügt werden)
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
})
});
Ich hoffe, das ist einigermaßen klar. Es scheint, dass es ziemlich einfach sein sollte, eine Zeile über das modale Formular hinzuzufügen, ohne dass sie sofort an den Server gesendet wird, aber ich kann die Lösung nicht finden. Und bitte haben Sie Verständnis dafür, wenn ich nicht sofort auf die Symbole klicke, um die Antworten richtig zu würdigen, aber das werde ich tun, wenn ich weiß, was ich anklicken muss, also geben Sie bitte entsprechende Hinweise. :) Vielen Dank im Voraus. Jerry