jqGrid Anzeige eigener Fehler-dialog mit celledit
Ich bin mit jqGrid für die Anzeige von Tabellen in meiner PHP-Anwendung. Das alles funktioniert gut, aber für ein raster an, ich möchte eine bestimmte Spalte (genannt "Preis") inline bearbeitet werden.
Was ich will, ist, dass, ich möchte die Ausgabe meiner eigenen Jquery-UI-dialog-Bildschirm, wenn etwas nicht in Ordnung ist. Ich denke, die beste, dies zu tun ist in der afterSubmitCell Ereignis, aber das problem ist ich kann nicht verhindern, dass jqGrid die Anzeige von der Standard-dialog mit den server-response-Nachricht.
Ich habe so etwas wie dieses:
$('#productslist').jqGrid('setGridParam', {
afterSubmitCell : function(serverresponse, rowid, cellname, value, iRow, iCol){
$('<div></div>').html('My own error message').dialog({
'title' : 'Some title',
'modal' : true,
'show' : 'blind',
'hide' : 'blind'
});
return [false, ''];
}
}).trigger('reloadGrid');
Accoding zu der Dokumentation:
http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing
Diesem Fall hat die Rückgabe eines array mit einem booleschen Wert, der angibt, es ist ein großer Erfolg, oder es ist nicht und als zweite die Nachricht. Diese Meldung wird angezeigt, jquery-ui-dialog, ausgelöst durch den jqGrid selbst.
Die Sache ist die ich will passen Sie den dialog, wenn etwas falsch happends. Aber es scheint, gibt es nicht viele Möglichkeiten, oder ich kann Sie nicht finden.
Habe ich versucht, das Ereignis errorCell als wel, aber das Ereignis wird nur ausgelöst, wenn der server nicht mit einer 200-Antwort. Oder soll ich Sie schicken einen anderen response-code 200 wenn ein Fehler happends? Scheint zu sein, ein wenig schmutzig zu mir..
Hoffe mir kann jemand helfen! Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den best-practice-meiner Meinung nach ist die Verwendung immer eine error-HTTP code (code >= 400) im Falle eines Fehlers. In dem Fall können Sie errorCell Veranstaltung.
Wenn Sie nicht ändern können, den server-code, den Sie ändern können das jqGrid-code und ändern Sie die Zeilen
den folgenden
Können Sie beispielsweise änderungen in der
jquery.jqGrid.src.js
(gehen auf der Linie 8665 in der version 4.1.2).jQuery.ajax
und jqGrid genau das zu tun, was erforderlich sind, im Falle von Fehlern. Zum Beispiel, wenn Ihr server kann nicht füllen Sie das jqGrid, weil der Fehler, der server sollte nicht zurück{page:0, total:0, records:0, rows:[]}
die verarbeitet werden, von jqGrid. Im Falle eines Fehlers, die server-Antwort ist absolut ein anderes format und Sie könnenloadError
tun Dekodieren und zur Anzeige der Fehlermeldung. Die Verwendung von HTTP-Fehlercode ist wirklich praktisch.Ich einen Weg gefunden, Sie zu unterdrücken, die in-built-dialog, ohne den Quellcode ändern, das ist natürlich ein letztes Mittel für die Wartung Gründen. Wenn die in-built-Dialogfeld aufgerufen, erhält es den Fokus, der es uns ermöglicht, verwenden Sie dieses Ereignis, um es zu schließen wieder runter
Oder, wenn, wie mir, das problem war nur das styling und Sie sind glücklich, übergeben Sie den jqGrid-Nachricht direkt durch Ihren dialog, können Sie die unten und nicht alles in :
Ich weiß, dies ist eine alte post, aber wahrscheinlich der beste Weg, dies zu behandeln, ohne Invasion der code ist durch die Neudefinition der Funktion auf Ihren eigenen code:
können Sie so etwas tun
Nun die Standard-Nachricht nicht desplayed. Sie können popup-was auch immer Sie wollen, indem Sie Ihre benutzerdefinierten code.