jqGrid senden bearbeitet/gelöscht inline Informationen serialisierten JSON-format
Ich versuche zu tun, eine inline-Bearbeiten mit einer Spalte mit formatter: 'actions'
wollen und senden die Informationen an den server im JSON-format, aber ich kann nicht. Ich habe schon viele Dinge versucht, aber keine Ergebnisse. Noch senden von Informationen ohne serialisieren.
Habe auch versucht $.extend($.jgrid.edit, (...));
bei der Initialisierung $(function(){...});
ohne Ergebnis.
Meine formatoptions sieht wie folgt aus:
formatoptions: {
keys: true,
editbutton: true,
delbutton: true,
//url: url,
editOptions: {
url: url,
ajaxEditOptions: {
//url: url,
contentType: 'application/json;charset=utf-8',
type: 'POST',
datatype: 'json'
}
},
delOptions: {
url: url,
ajaxDelOptions: {
//url: url,
contentType: 'application/json;charset=utf-8',
type: 'POST',
datatype: 'json'
}
}
}}
Aber immer noch nicht funktioniert :S ich weiß nicht was ich falsch mache.
Ich würde schätzen, wenn Sie mir helfen.
PS: ich writted zu viele url-Eigenschaften, denn ich war die überprüfung, wo ich habe, es zu schreiben, es zu tun zu arbeiten. Um Sie zu Bearbeiten, funktioniert nur wenn ich die url aus der editOptions, nur wenn ich es in formatoptions. Aber für löschen, die es nicht kümmert, wenn ich es in/out delOptions
einschließlich ajaxDelOptions
. Wenn Ihr mir helfen könntet auch mit, ich würde schätzen.
AKTUALISIERT
Löschen funktioniert einwandfrei mit dieser Konfiguration, aber inline-editing speichern-button immer noch nicht funktioniert. Ich klebte die gleiche config, ändern von Optionen für die Bearbeitung und immer noch nicht funktioniert.
delOptions: {
url: url,
mtype: 'POST',
reloadAfterSubmit: true,
ajaxDelOptions: {
contentType: "application/json"
},
serializeDelData: function(postdata) {
return JSON.stringify(postdata);
}
}
AKTUALISIERT 2
Hier ist mein JS.
$(function() {
$.mask.definitions['2'] = '[0-2]';
$.mask.definitions['5'] = '[0-5]';
$.extend($.jgrid.defaults, {
ajaxRowOptions: {
contentType: "application/json",
dataType: "json",
success: function() {
},
error: null
},
serializeRowData: function(data) {
delete data.oper;
return JSON.stringify(data);
}
});
});
function loadGrid(identifier) {
$("#list").jqGrid({
url: 'foo.html?identifier=' + identifier,
type: 'GET',
datatype: 'json',
repeatitems: false,
autowidth: true,
altRows: false,
hidegrid: false,
cmTemplate: {
sortable: false,
resizable: false
},
colNames: ["id", "column1", "column2", "column3", "column4", "column5", "column6", "column7", " "],
colModel: [
{name: "id", label: "id", hidden: true},
{name: "columnData1", label: "columnData1", key: true, hidden: true},
{name: "columnData2", label: "columnData2", edittype: "select", editable: true,
editoptions: {
dataUrl: 'foo/bar.html'
}},
{name: "columnData3", label: "columnData3", width: 75, editable: true},
{name: "columnData4", label: "columnData4", width: 100, edittype: "select", editable: true,
editoptions: {
dataUrl: 'foo/bar.html'
}},
{name: "columnData5", align: "right", label: "columnData5", width: 55, formatter: 'number',
formatOptions: {
decimalPlaces: 2
}, editable: true},
{name: "columnData6", align: "right", label: "columnData6", width: 55, formatter: 'number',
formatOptions: {
decimalPlaces: 2
}, editable: true},
{name: "columnData7", align: "right", label: "columnData7", width: 55, formatter: 'number',
formatOptions: {
decimalPlaces: 2
}},
{name: "actions", formatter: "actions", width: 35}
],
pager: '#pager',
rows: '',
rowList: [],
pgbuttons: false,
pgtext: null,
viewrecords: false,
gridview: true,
caption: 'MyCaption',
subGrid: true,
subGridRowExpanded: function(subgrid_id, row_id) {
var subgrid_table_id, pager_id;
subgrid_table_id = subgrid_id + "_t";
pager_id = "p_" + subgrid_table_id;
$("#" + subgrid_id).html("<table id='" + subgrid_table_id + "'></table><div id='" + pager_id + "'></div>");
$("#" + subgrid_table_id).jqGrid({
url: 'foo/bar.html?identifier=' + identifier + '&rowId=' + row_id,
type: 'GET',
datatype: 'json',
repeatitems: false,
autowidth: true,
altRows: false,
hidegrid: false,
cmTemplate: {
sortable: false,
resizable: false
},
colNames: ['column1', 'column2', 'column3', 'column4', 'column5', 'column6', ' '],
colModel: [
{name: 'columnData1', hidden: true, key: true},
{name: 'columnData2', width: 75, formatter: 'date',
formatoptions: {
srcformat: 'Y-m-d',
newformat: 'd/m/Y'
},
editoptions: {
readonly: 'readonly',
dataInit: function(elem) {
$(elem).width("75%");
$(elem).datepicker({
dateFormat: "dd/mm/yy",
showOn: "button",
buttonImage: "../css/images/calendar.gif",
buttonText: "Muestra el calendario.",
buttonImageOnly: true
});
}}
, editable: true},
{name: 'columnData3', width: 75,
formatter: function(cellval, opts) {
if (!/^([0-1][0-9]|2[0-3]:[0-5][0-9])/.test(cellval)) {
var date = new Date(cellval);
opts = $.extend({}, $.jgrid.formatter.date, opts);
return $.fmatter.util.DateFormat("", date, 'H:i', opts);
} else {
var date = new Date();
var time = cellval.split(":");
date.setFullYear(1899);
date.setMonth(12);
date.setDate(30);
date.setHours(time[0]);
date.setMinutes(time[1]);
date.setSeconds(0);
opts = $.extend({}, $.jgrid.formatter.date, opts);
return $.fmatter.util.DateFormat("", date, 'H:i', opts);
}
},
editoptions: {dataInit: function(elem) {
$(elem).mask("29:59");
}},
editrules: {custom: true, custom_func: function(value) {
if (/^([0-1][0-9]|2[0-3]:[0-5][0-9])/.test(value)) {
return [true, ""];
} else {
return [false, " no es un formato de hora válido.<br/>Por favor, introduzca una hora en un formato <b>hh:mm</b> válido."];
}
}}, editable: true},
{name: 'columnData4', width: 80, editable: true},
{name: 'columnData5', width: 200, editable: true},
{name: 'columnData6', align: 'right', width: 50, editable: true, formatter: 'number',
formatoptions: {
decimalPlaces: 2
}},
{name: 'actions', formatter: 'actions', width: 40,
formatoptions: {
//keys: false,
editbutton: true,
delbutton: true,
url: "foo/bar/edit.html?identifier=" + identifier + "&rowId=" + row_id,
editOptions: {
keys: true,
//url: "foo/bar/edit.html?identifier=" + identifier + "&rowId=" + row_id,
mtype: "POST"
},
delOptions: {
url: "foo/bar/delete.html?identifier=" + identifier + "&rowId=" + row_id,
mtype: 'POST',
reloadAfterSubmit: true,
ajaxDelOptions: {
contentType: "application/json"
},
serializeDelData: function(postdata) {
delete postdata.oper;
return JSON.stringify(postdata);
}
}
}}
],
height: 190,
pager: pager_id,
rows: '',
rowList: [],
pgbuttons: false,
pgtext: null,
viewrecords: false,
gridview: true,
loadError: function(xhr, status, error) {
alert(xhr + " : " + status + " : " + error);
},
jsonReader: {
repeatitems: false
},
gridComplete: function() {
$("div.ui-inline-save").click(function() {
var dlgDiv = $("#info_dialog");
dlgDiv.width(600);
var parentDiv = dlgDiv.parent();
var dlgWidth = dlgDiv.width();
var parentWidth = parentDiv.width();
var dlgHeight = dlgDiv.height();
var parentHeight = parentDiv.height();
dlgDiv.css('top', Math.round((parentHeight - dlgHeight) / 2));
dlgDiv.css('left', Math.round((parentWidth - dlgWidth) / 2));
});
$("div.ui-inline-del").click(function() {
var dlgDiv = $("#delmod" + subgrid_table_id);
dlgDiv.width(600);
var parentDiv = dlgDiv.parent();
var dlgWidth = dlgDiv.width();
var parentWidth = parentDiv.width();
var dlgHeight = dlgDiv.height();
var parentHeight = parentDiv.height();
dlgDiv.css('top', Math.round((parentHeight - dlgHeight) / 2));
dlgDiv.css('left', Math.round((parentWidth - dlgWidth) / 2));
});
$("#gbox_" + subgrid_id + "_t").removeClass('ui-corner-all');
$("#" + pager_id).removeClass('ui-corner-bottom');
disableSelection(document.getElementById(subgrid_table_id));
}
}).navGrid("#" + pager_id, {add: true, edit: false, del: false, search: false, view: false, refresh: true}, {},
{afterShowForm: function(form) {
var dlgDiv = $("#editmod" + subgrid_table_id);
dlgDiv.width(600);
var parentDiv = dlgDiv.parent();
var dlgWidth = dlgDiv.width();
var parentWidth = parentDiv.width();
var dlgHeight = dlgDiv.height();
var parentHeight = parentDiv.height();
dlgDiv.css('top', Math.round((parentHeight - dlgHeight) / 2));
dlgDiv.css('left', Math.round((parentWidth - dlgWidth) / 2));
}
});
},
loadError: function(xhr, status, error) {
alert(xhr + " : " + status + " : " + error);
},
jsonReader: {
repeatitems: false
},
gridComplete: function() {
$("div.ui-inline-save").click(function() {
var dlgDiv = $("#info_dialog");
dlgDiv.width(600);
var parentDiv = dlgDiv.parent();
var dlgWidth = dlgDiv.width();
var parentWidth = parentDiv.width();
var dlgHeight = dlgDiv.height();
var parentHeight = parentDiv.height();
dlgDiv.css('top', Math.round((parentHeight - dlgHeight) / 2));
dlgDiv.css('left', Math.round((parentWidth - dlgWidth) / 2));
});
$("div.ui-inline-del").click(function() {
var dlgDiv = $("#delmodlist");
dlgDiv.width(600);
var parentDiv = dlgDiv.parent();
var dlgWidth = dlgDiv.width();
var parentWidth = parentDiv.width();
var dlgHeight = dlgDiv.height();
var parentHeight = parentDiv.height();
dlgDiv.css('top', Math.round((parentHeight - dlgHeight) / 2));
dlgDiv.css('left', Math.round((parentWidth - dlgWidth) / 2));
});
disableSelection(document.getElementById("list"));
}
}).navGrid("#pager", {add: true, edit: false, del: false, search: false, view: false, refresh: true}, {},
{afterShowForm: function(form) {
var dlgDiv = $("#editmodlist");
dlgDiv.width(600);
var parentDiv = dlgDiv.parent();
var dlgWidth = dlgDiv.width();
var parentWidth = parentDiv.width();
var dlgHeight = dlgDiv.height();
var parentHeight = parentDiv.height();
dlgDiv.css('top', Math.round((parentHeight - dlgHeight) / 2));
dlgDiv.css('left', Math.round((parentWidth - dlgWidth) / 2));
}
});
var height = $("body").height();
$('.ui-jqgrid-bdiv').height(height);
}
Geänderte Spalte, Namen, etc. zur Sicherheit (obviusly). Dies ist mein JS. Ich musste jqGrid in einem function
und immer identifier
als parameter, da habe ich eine JSP-Datei, die geladen wird in ein Iframe und das JSP hat ein anderes Iframe lädt das JS. Ich brauchte zum senden der identifier
dass ich erhalten in die JSP zu bauen das raster. Der beste Weg, ich fand, ist, dass.
Das ist die identifier
Wert.
Auch, ich brauche das identifier
und die row_id
um die Daten zu aktualisieren, weil ich habe 3 primäre Schlüssel zu identifizieren, die ein bestimmtes Element. Ich brauche identifier
, Eltern row_id
und tatsächlichen row_id
dass ich Bearbeiten. Letzte, den ich erhalten Sie von der JS-Objekt in JSON-format.
Es ist wie es nicht erkennt editOptions
Eigenschaft, weil es nicht keys: true
. Es ließ mich nicht akzeptieren, das Bearbeiten mit Enter
- Taste.
Wenn Sie braucht noch mehr Informationen, einfach Fragen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass der Ursprung deines Problems ist Missverständnis darüber, wie
formatter: 'actions'
funktioniert.Es gibt drei Haupt - Bearbeiten-Modus unterstützt von jqGrid: inline-editing, Formular Bearbeiten und Zelle Bearbeiten. Wenn Sie nicht
editformbutton: true
Möglichkeitformatter: 'actions'
innerhalb vonformatoptions
dann Bearbeiten-button verwenden inline-editing. Löschen Schaltfläche wird immer in form schneiden, denn es gibt keine delete-Methode in die inline-editing-Modul.Also, wenn Sie enthält einige option innerhalb von
editOptions
vonformatoptions
vonformatter: 'actions'
dann sollte es eine option sein, die von editRow (siehe Eigenschaften voneditparameters
Objekt in der Dokumentation). So können Sie beispielsweise festlegenaber die
ajaxEditOptions
ignoriert werden hier.$.jgrid.edit
kann verwendet werden, zu ändern, Standard-Werte füreditGridRow
die Teil der forme Bearbeitung, aber zum ändern der Standardeinstellungen voneditRow
müssen Sie verwenden$.jgrid.inlineEdit
statt.delOptions
können Sie Parameter angeben, die der delGridRow. Die AKTUALISIERT Teil Ihrer Frage mit der richtigen Optionen. So Löschen Sie den Betrieb ordnungsgemäß funktioniert.Durch die Art und Weise, die Sie verwenden können
editurl
Möglichkeit, jqGrid zu geben Sie die URL für inline-Bearbeiten und form Bearbeiten. Soediturl: url
auf einem Platz besser sein wird, als wennurl: url
mehrere Male.Was Sie tun müssen für eine erfolgreiche Bearbeitung ist das hinzufügen
ajaxRowOptions
undserializeRowData
als jqGrid Optionenoder, um es in
$.jgrid.defaults
.AKTUALISIERT: verkennst Du den Wert der eindeutigen id. HTML-standard nicht erlaubt, zwei Elemente mit dem gleichen
id
- Attribut auf der Seite. Die demo, die Sie gestellt nicht verwendenidPrefix
in subgrids. Wenn Sie öffnet subgrids für die Zeilen und untersuchen HTML-code der Seite mit Bezug auf Entwickler-Tools (drücken Sie F12 IE) sehen Sie die folgendenDamit Sie verwenden
idPrefix
für subgrids. Ich empfehlen Sie, um den Wert davon abhängt, rowid des übergeordneten Rasters (so etwas wieidPrefix: "s_" + row_id + "_"
). Blick auf hier für mehr meine Antwort zum Thema.AKTUALISIERT 2: ich schaute in den code von
formatter: "actions"
man mehr Zeit und ich sehe, dass es verwendeturl
Möglichkeit formatter für die inline-Bearbeitung (siehe die Dokumentation) und verwendetdelOptions
für löschen undeditOptions
für form Bearbeiten. SoeditOptions.url
wird nur verwendet, wenn Sie verwenden würdeneditformbutton: true
option.ajaxRowOptions
arbeitet als spected. Es sendet die Informationen als JSON-format. Aber immer noch die url-problem.url
Eigenschaft ineditOptions
funktioniert bei mir nicht. Das es ein bug ist oder einfach nur seine nicht kompatibel miteditRow
? Ich sah, dass Sie diese Eigenschaft überschreibteditUrl
... I dont haben diese Eigenschaft definiert und stills nicht arbeitenurl
imeditOptions
.save
Schaltfläche zeigt ein Dialogfeld mit der Fehlermeldung text auf Kopf-und Fehler-CSS-design im Inhalt, aber der Inhalt istOK
. Dass jede andere option, die ich vergessen habe zu deaktivieren???url
werden konnte, weil der wo, , wenn und wie Sie definierturl
variable und wenn Ihr zuweisen/ändern Sie den Wert.url
als variable für die Sicherheit. Es ist nicht eine variable, seinen text. Wie dieseurl: "foo/bar/edit.html?rowIdParentGrid=" + identifier + "&rowIdSubGrid=" + row_id,
.identifier
undrow_id
sind Variablen, die speichert die id ' s verwenden Sie für das update in meinem server und speichert die richtigen Werte (auch schon überprüft). Wenn ich die url ineditOptions
es nutzt die übergeordneten gridurl
Eigenschaft, die bekommt alle übergeordneten grid-Datenhttp://localhost:8084/project/foo/bar.html?id=1&_search=false&nd=1366191638407&rows=20&page=1&sidx=&sord=asc
. Vielen Dank für Ihre schnellen Antworten.url
identifier
brauchen werden geändert zur Laufzeit, weil Sie wollen, dass es hängt davon abidentifier
undrow_id
. Ich nehme an, dass es Ihr problem. Sie könnenextraparam
definiert, mit EigenschaftenrowIdParentGrid
undrowIdSubGrid
alsserializeRowData
zur Unterstützung der Funktionen (siehe hier, hier und andere). Sollten Sie post von der JavaScript-code, die Sie verwenden, wenn Sie wollen, ich Stelle Sie der Ort, wo Sie verwendenurl
in einer falschen Art und Weise.loadGrid
- Funktion wird aufgerufen werden. Im Allgemeinen kann man die Funktion aufrufen nur einmal.loadGrid
Funktion, die genannt werden in die JSP als<script>loadGrid(<%=identifier%>);</script>
. Ist der beste Weg, ich fand die übertragung der Kennung von einemobject
erhielt in einer JSP auf JS und laden Sie das raster überurl.html?parameter=id
...identifier
einige statische Konstanten, die auf dem server definiert? In irgendeiner Weise, die Sie haben, um AnrufloadGrid
innerhalb von$(function() {...})
(im$(document).ready(function() {...})
). Warum Sie nicht einfachurl: 'foo.html?identifier=<%=identifier%>'
? Es könnte sein, erforderlich zu verwendenencodeURIComponent(identifier)
im URL. Wenn Sie trennen Sie die meisten JavaScript-code von HTML-code, den Sie platzieren können<script>var MY_GLOBAL_IDENTIFIER = <%=identifier%>;</script>
auf HTML-Seite und benutzen Sie einfachMY_GLOBAL_IDENTIFIER
im JavaScript-code.editurl: "foo/bar/edit.html?identifier=" + identifier + "&rowId=" + row_id
als zusätzliche parameter von subgrid anstelle der Verwendungurl
parameter mehrmals verwenden?iframe
. Dassiframe
lädt eine JSP und erhält ein Java-Objekt, das hat einen parameter, derid
. Das JSP muss ein anderesiframe
im inneren zum laden einer anderen JSP. Die url aus, dassiframe
istfoo.html?identifier=<%=identifier%>
. Wenn die Lasten, die JSP wird es, die parameter überInteger identifier = (Integer) request.getParameter('identifier');
. Nun, wenn er erhielt denidentifier
machte ich ein kleines Skript manuell ein<script>loadGrid(<%=identifier%>);</script>
. Ich weiß nicht, ob es ist oder nicht, schon klar :Sedit.html?...
unddelete.html?...
Wenn ichediturl
ichoper
parameter, die das Objekt, wenn es ankommt, um den server. Ich kann das nicht, und löschen Sie diesen parameter später? Es ist, weil derJsonTransformer
auf server-Seite.formatter: 'actions'
. Könnten Sie wiederholen, was ist dein Aktuelles problem? Was ist noch nicht gelöst? Der code, die du gepostet hast, verwendeturl
als Eigentum desformatoptions
falsch ist. Die richtigeurl
Linie innerhalb dereditOptions
wird kommentiert. Könnte man das problem beheben, und versuchen Sie, Ihren code noch einmal?idPrefix
option zu haben, die keine id Duplikate. Sie können die Codes einiger Häufig Rückrufe in$.jgrid.defaults
. In der Weise können Sie Duplikate entfernen aus Hauptnetz und subgrids. Sie sollten Aufräumen Verwendung von jqGrid-Optionen zu. Ich würde Ihnen empfehlen, in der Spalte Vorlagen zusätzlich. Sie haben zum Beispiel mehrere Spalten mit zahlen, die Sie definieren können variablenumberTemplate
und verwendentemplate: numberTemplate
imcolModel
(siehe hier). Es reduziert den code und macht es mehr überschaubar.url
Eigenschaft vonformatoptions
und verwendet die richtigenurl
Linie innerhalbeditOptions
. Was es tut, ist die mithilfe der Elternurl
'foo.html?identifier=' + identifier
. Die iframe-url. Ich weiß nicht, warum es verwendet, dassurl
als default anstelle derurl
dass ich ineditOptions
. Auch, ich benutze keine zahlen für die Spaltennamen. Zur Sicherheit entfernte ich alle Informationen. Sorry 😛 heheurl
sehr seltsam. Wahrscheinlich gibt es einen Fehler in jqGrid oder es gibt einen Fehler in Ihrem code. Ich würde Ihnen empfehlen, den code zu Debuggen. Sie können einen Haltepunkt im inneren von $.fn.fmatter.rowactions. Sollten Sie verwendenjquery.jqGrid.src.js
stattjquery.jqGrid.min.js
führen.oper
Eigenschaft, jqgrid, fügt meine JSON-serialisiertes Objekt, sended zu meinem server und die Arbeit mit, der option (wenn Sie möchten, zu Bearbeiten oder zu löschen).{name: 'columnData1', hidden: true, key: true}
in beide Netze und subgrid. So können Sie id dupplicates. Nur versuchen Sie, fügen Sie die optionidPrefix
zu subgrid oder eineidPrefix
für Haupt-grid (zum BeispielidPrefix: "m_"
) und ein weiteres für die subgrid ((zum BeispielidPrefix: "s_"
)). Ich hoffe, dass es dein problem lösen.idPrefix
Eigenschaften, auf jedem grid, und ich teilte es am server, um nur die ID. Die Schaltfläche speichern stills werde diese urlhttp://localhost:8084/foo/foo2/foo3.html?identifier=1
wenn Sie gehen um zuhttp://localhost:8084/foo/foo2/foo3/foo4/edit.html?identifier=1&row_id=m_1
. Diese sind die richtigen id ' s sind nicht entfallen für die Sicherheit.idPrefix
und Sie brauchen, um zu bauenid
ausrowid
(id
mit Vorwahl), die Sie verwenden können$.jgrid.stripPref
Methode, die von jqGrid intern. Zum Beispiel$.jgrid.stripPref("m_", rowid)
zurück"1"
idrowid="m_1"
. Ich verstehe nicht, welche security-Probleme du meinst.id
gepostet, dass ich die echten. Nichts wichtiges. MitidPrefix
ich erhalte die info, die ich gepostet.identifier=1
,row_id=m_1
(das ist die Zeile aus der übergeordneten Netz. Wenn ich drücken Sie "löschen" mit der zweiten Zeile der übergeordneten Netz sendet esrow_id=m2
durch URL). Außerdem erhalten diekey
- Eigenschaft der Zeile, die ich löschen gedrückt. Diese 3 sind die 3 Tasten, die ich brauche, zu Bearbeiten, dass eine bestimmte Zeile in meiner Datenbank. Sorry, wenn es nicht klar war vorher, hehehttpServletRequest.getAttribute('oper')
und vergleichen, ob löschen oder Bearbeiten Sie auf der server-Seite. Dann nutzen SieeditUrl
- Eigenschaft für beide zu JS. Ich denke, dass ist keine schlechte Lösung heheformatter: 'actions'
: eines, in dem Hauptnetz und ein anderes in der subgrid. Wenn der Benutzer klicken Sie auf "Bearbeiten" - action-button der subgrid die richtigeurl
"foo/bar/edit.html?identifier=" + identifier + "&rowId=" + $.jgrid.stripPref("m_", row_id)
genannt werden sollte. Wenn es nicht so ist, dann könnte es ein bug in jqGrid oder ist das ein bug in deinem code. Man muss die debug-code, um den Grund herauszufinden. Könnten Sie die URL (Ihre live-demo oder in jsfiddle.net) zu der demo, die das problem zeigen?LOCAL
Daten? (Es wird eine Weile dauern)Local Data
. Sorry für die Aufnahme so lange, aber hatte ein bisschen code zu Bearbeiten. Ich habe ein problem, hochladen mein code denn ich kann nicht hochladen, jqGrid. jsfiddle nicht über ein Kontrollkästchen zu laden, jqGrid, oder atleast ich nicht gefunden. Vorschläge?External Resources
geben einige URL der CSS-oder JS (wiehttp://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-4.4.5/css/ui.jqgrid.css
,http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-4.4.5/js/i18n/grid.locale-en.js
,http://www.ok-soft-gmbh.com/jqGrid/jquery.jqGrid-4.4.5/js/jquery.jqGrid.src.js
) und klicken Sie dann auf "+" fügen Sie alle externen Ressourcen.datatype: local
können Sie alle, was Sie hier benötigen. Welche zusätzlichen Ressourcen meinst du? Was Sie brauchen, laden mehr für die demo?input.mask
plugin, aber es ist nichts. JS arbeiten können, ohne dass. Anyway, jetzt gibt eine Fehlermeldung über$.jgrid.formatter.integer: Cannot read property 'integer' from undefined.
und gibt zu, dass Fehler in Zeile 85$('#list').jqGrid({
jsfiddle.net/UsJ5xgrid-locale
. Wenn ich auf die url, die du mir gegeben hast, schickt er mich auf eine Internetseite zu wählen, einelocale
. Es passiert mir mit der genau samecode in meinem computer, aber meinelocale
und fein gearbeitet. Ich denke, es ist etwas falsch mit der url u gab mir :S AKTUALISIERT jsfiddle.net/UsJ5x/1 ich habe die url für die korrektelocale
. Wahrscheinlich wurde ein Brief fehlt in der url. Auch Sie können die perfekte demo jetzt.grid.locale-en.js
und dannjquery.jqGrid.src.js
. 2) sollten Sie ändern "onLoad" auf die option "onDomready" und entfernen Sie$(function() {...}
aus dem code. 3) Sie den aktuellen code verwendetid:identifier
für jede Zeile (siehedataMain
) das ist ein bug. Sie generieren id Duplikate in den Weg. 4), die Sie nicht verwendenidPrefix
für subgrid. so haben Sie mehr id Duplikate. Siehe die Antwort zum Beispiel für details.onDomready
3) ich benutzeid:identifier
als "EXTRA" - Attribut. Es ist nur ein weiteres Attribut. Ich habe nicht dupliziertrow_id
, denn wenn man einen Blick aufcolModel
ich geputtetkey:true
beiinstanceNumber
. Id nur ein Wert aus der übergeordneteniframe
desiframe
ist, dass sich diejqGrid
. Wenn ich entfernen Sie das Attribut, stills arbeiten. 4) ich benutze keineidPrefix
auf subgrid weil ich nie senden Sie die Infos zu einer anderen web-Seite. Trotzdem kann ich es hinzufügen.formatter: "actions"
man mehr Zeit und ich sehe, dass es verwendeturl
option formatter für inline-editing-Operationen (siehe Dokumentation) und verwendetdelOptions
für löschen undeditOptions
für form Bearbeiten. SoeditOptions.url
wird nur verwendet, wenn Sie verwenden würdeneditformbutton: true
option.editOptions
. Ich nahm an, dass die verbuggt ist oder das es nicht funktioniert mitinlineEdit
. Das ist das einzige problem, das ich jetzt haben. Ich habe es zu definieren, da Bearbeiten gehtedit.html
und löschen zudelete.html
.idPrefix
imsubGrid
idPrefix
und Einstellung vonurl
für die inline-Bearbeitung an der richtigen Stelle (siehe AKTUALISIERT 2 in meiner Antwort)? In meinen tests sehe ich kein problem mehr. Siehe jsfiddle.net/UsJ5x/8URL
Eigentum anformatoptions
undURL
Eigentum andelOptions
funktioniert einwandfrei! Löschen gehtdelete.html
und wenn ich das Bearbeiten einer Zeile, sendet es Informationen zuedit.html
. Vielen Dank für Ihre pattience, alle Eure Empfehlungen und danke für Eure Hilfe! ^_^