2016-05-09 9 views
0

Ich versuche, den Speicher auf RowEditing aktualisieren zu aktualisieren klickenaktualisieren Grid-Speicher auf Row Bearbeiten

Added ein Hörer als

listeners: {            
       'edit': function (editor, e) { 
        alert('Row Updating'); 
       } 
      } 

Alarm auf Klick-feuert so versucht das aktualisieren jetzt speichern, wie unten

1.var rec = e.record;             
    e.store.sync(); 

Alle oben genannten können die geänderten Datensätze zu speichern nicht aktualisieren. Es wirft Fehler als -

Unhandled exception at line 1984, column 17 
0x80004005 - JavaScript runtime error: unknown exception 

Was ist der Grund sein? Bitte schlagen Sie mir vor, wie kann ich die Daten hier aktualisieren.

Aktualisierung:

Hinzufügen vollständige Code -

Ext.define('TimeModel', { 
extend: 'Ext.data.Model', 
fields: [ 
    { name: 'stop_type_id', type: 'int' } 
] 
}); 
---------------------- 
var storeStop = new Ext.data.SimpleStore({ 
fields: ["value", "text"], 
data: [ 
    [1, "Delivery"], 
    [2, "Pickup"] 
] 
}); 
--------------------------- 
var comboBoxStopRenderer = function (comboStop) { 
return function (value) { 
    var idx = comboStop.store.find(comboStop.valueField, value); 
    var rec = comboStop.store.getAt(idx); 
    return (rec === null ? '' : rec.get(comboStop.displayField)); 
}; 
} 
------------------------ 
var comboStop = new Ext.form.ComboBox({ 
store: storeStop, 
valueField: "value", 
displayField: "text" 
}); 

xtype: 'grid', 
itemId: 'gdTimeCommitmentItemId', 
store: { 
type: 'webapi', 
api: { 
    read: 'api/Report/GetTime' 
}, 
autoLoad: false, 
}, 
columns: [ 
     { 
      text: 'Stop Type', dataIndex: 'stop_type_id', width: '12%', editor: comboStop, renderer: comboBoxStopRenderer(comboStop) 
     } 
    ], 
plugins: [rowEditingTime], 
tbar: [ 
{ 
text: 'Add',  
handler: function() { 
    rowEditingTime.cancelEdit(); 
    var timeGrid = this.up('grid'); 
    var r = Ext.create('TimeModel', { 
     stop_type_id: 1 
    }); 
    timeGrid.store.insert(0, r); 
    rowEditingTime.startEdit(0, 0);   
} 
} ],          
listeners: {            
'edit': function (editor, e) { 
    //alert('Updating'); 
    //var rec = e.record;             
    //e.store.sync(); 
    //var timeGrid = this.up('grid'); 
    //timeGrid.store.sync(); 
    // Ext.ComponentQuery.query('#gdTimeCommitmentItemId')[0].store.sync(); 
    //this.store.sync(); 
} 

}

Antwort

0

Fügen Sie Ihren stor E-Proxy-Klasse in Ihrer Frage. Ich denke, Sie haben Ihren Store-Proxy nicht korrekt erstellt.

Beispiel Shop-Proxy für den Sync

proxy : 
{ 
    type : 'ajax', 
    reader : 
    { 
     root : 'data', 
     type : 'json' 
    }, 
    api : 
    { 
     read : '/ExampleService.svc/students/', 
     create: '/ExampleService.svc/createstudentbatch/', 
     update : '/ExampleService.svc/updatestudentbatch/', 
     destroy : '/ExampleService.svc/deletestudentbatch/' 
    }, 
    actionMethods : 
    { 
     destroy : 'POST', 
     read : 'GET', 
     create : 'POST', 
     update : 'POST' 
    }} 
+0

entnehmen Sie bitte den obigen Update-Code. Führe mich hier – user1893874

+0

Ihre Grid Store App nur gelesen haben. api: { lesen: 'api/Report/GetTime' } wo ist das Update API. refer this link http://www.extjs-tutorial.com/extjs-examples/crud-in-extjs-4-grid-example – CharanRoot

+0

Hier versuche ich, den Laden lokal und auf der Seite zu aktualisieren. Klicken Sie auf Speichern, um den Wert aus dem Laden zu erhalten zur Datenbank. On RowEditing - Update: Ich möchte den Speicher aktualisieren und nicht zu DB. RowEditing - Hinzufügen - funktioniert hier gut. – user1893874