2009年6月30日火曜日

ExtJs-45 EditorGridPanelのコールバックって、ああそうか。

少しやるきになってきたのか、通勤途中の電車以外にも
家で隙間時間でコーディングをするように。

さて、実績を入力するのってダイアログ出したりするのは手順が増えるのでまどろっこしい。
ということでEditorGridPanelで。

毎度のことで、InitComponentで
リスナー登録。
this.addListener('afteredit', this.onAfterEdit, this, null );

で、リスナー作成
onAfterEdit : function( e ){
var data = e.record.get('ID');
//console.dir(e);
Ext.Ajax.request({
url: this._writeUrl,
success: this.onAfterEditSuccess.createDelegate( this ),
failure: this.onAfterEditFailure.createDelegate( this ),
params: {action:'update', ResultDate : App.TaskManagement.Result.daySelectCtrl.value, ResultId : taskId }
});
},
onAfterEditSuccess : function( response, options ){{
alert('onAfterEditSuccess');
//commitするのか?
},
onAfterEditFailure : function( response, options ){{
alert('onAfterEditFailure');
//rejectするのか?
},
ちょっと待てよ、commitするのもrejectするのもイベントオブジェクトが必要。
って、いままでの実装からSuccess、Filureを別めそっど定義してたから。
JavaScriptは関数スコープでしたね。
直接書いてやればよいのかね。

onAfterEdit : function( e ){
//console.dir(e);
Ext.Ajax.request({
url: this._writeUrl,
success: function( response, options ){{
      //サーバ登録OKなのでコミット。
e.commit;
      },
failure: function( response, options ){{
//サーバ処理NGなのでりじぇくと。
e.reject();
},
params: {action:'update', ResultDate : App.TaskManagement.Result.daySelectCtrl.value, ResultId : e.record.get('ID') }
});
},

これで動くかなぁ

あと、通信するときに
var connection =Ext.data.Connection();
connection.request({
param:....
},
.......
って本でやってたけど大きな違いはまだ見てない。
個人的には非同期だぜ。ってわかりやすく、Ajax云々って。。。

あれ?
しらべよっと。

0 件のコメント: