2009-09-04 7 views
2

Ich mache In-Line-Bearbeitungen in einem Raster, aber es scheinen keine Ereignisse ausgelöst zu werden, die an diese Bearbeitung gebunden wären.jqGrid: Warum werden die Ereignisse, die ich für ein Gitter-Edit definiert habe, nicht ausgelöst?

Hier habe ich afterSubmit: und ich möchte es ausgelöst, nachdem der Benutzer das Feld Menge im Raster bearbeitet hat, aber es wird nie ausgelöst.

$('#tblLines').jqGrid({ 
     url: createUrl('/CRA/GetLines/'), 
     editurl: '/CRA/EditModifyLine', 
     emptyrecords: '', 
     datatype: 'json', 
     mtype: 'GET', 
     colNames: ['Group', 'Description', 'Quantity'], 
     colModel: [ 
     { name: 'Group', index: 'Group', width: 100, align: 'left' }, 
     { name: 'Description', index: 'Description', width: 400, align: 'left' }, 
     { name: 'Quantity', index: 'Quantity', width: 150, align: 'left', editable: true }, 
     pager: jQuery('#pgrLines'), 
     rowNum: 10, 
     rowList: [5, 10, 20, 50], 
     sortname: 'Group', 
     sortorder: "desc", 
     viewrecords: true, 
     caption: 'Core Group Lines', 
     onSelectRow: function(id) { 
      $('#tblCoreGroupLines').editRow(id, true); 
      lastsel = id; 
     }, 
     afterSubmit: function(response, postdata) { 
      alert('got here'); 
     }, 
     postData: { craId: $('#CraId').val() } 
    }); 

Ich habe versucht, die Ereignisse niedriger als Teil eines NavControl zu definieren, aber das funktioniert auch nicht. Die In-Line-Bearbeitung funktioniert gut - der POST ist erfolgreich und das Ergebnis kommt zurück, es trifft niemals die Ereignisse, die damit verbunden sein sollten. Ich habe alle Ereignisse ausprobiert, die mit der Änderung des Felds Menge zusammenhängen würden, aber keiner von ihnen funktioniert.

Habe ich das Ereignis an der richtigen Stelle definiert? Fehle ich eine Eigenschaft auf dem Gitter oder etwas?

Antwort

8

Ich denke, Sie müssen die afterSubmit in der Eigenschaft Argument editRow übergeben.

So müssen Sie die afterSubmit wie so bewegen:

..... 
onSelectRow: function(id) { 
    $('#tblCoreGroupLines').editGridRow(id, { afterSubmit: function(response, postdata) { 
      alert('got here'); 
     } 
    }); 
    lastsel = id; 
}, 
... 

die Dokumentation zu editGridRow Art von Hilfe in dieser Hinsicht.

Das obige Beispiel wird ein modales obwohl (das ist die einzige Stelle, wo AfterSubmit verwendet wird) verursachen. Wenn Sie etwas nach einer erfolgreichen Aktualisierung unter Verwendung eines indline bearbeiten wollen, sollten Sie in der Lage sein, die folgenden innerhalb von onSelectRow

$('#tblCoreGroupLines').editGridRow(id,true, undefined, function(res) { 
    // res is the response object from the $.ajax call 
    alert('success!!') 
}); 

Hier ist die Methode Signatur für EditRow von js/do grid.inlineedit.js

editRow : function(rowid,keys,oneditfunc,succesfunc, url, extraparam, aftesarvefunc,errorfunc, afterrestorefunc) { 
+0

Ich denke, du bist auf dem richtigen Weg. Diese editRow-Anweisung hatte jedoch zwei Parameter .editRow (id, true). Was ist mit dem booleschen 'wahren' Parameter passiert? Die Zelle scheint sich ohne sie nicht mehr zu unterwerfen. –

+0

Sorry, das sollte editGridRow sein. – seth

+0

Ich hatte gehofft, eine Popup-Box zu vermeiden. Idealerweise wollte man dieses Verhalten für Inline-Editierungen im Grid bekommen. –

1

Sie könnten auch Aftersavefunc-Ereignis in EditRow-Methode verwenden, um Server-Antwort zu erhalten, wenn das das einzige ist, was Sie suchen.

Verwandte Themen