2011-08-10 9 views
0

私はextjsカレンダーのためのajaxリクエストを試してみます。唯一の問題は、新しいレコードを作成するときです。私はフォームにeventIdを返信する方法です。私は新しいレコードを受け取った後に更新レコードをテストしたいと思います。 私は何をしますか。extjs3.3 calendar

'eventadd': { 
    fn: function (win, rec) { 
     win.hide(); 
     rec.data.IsNew = false; 
     rec.data.eventId = 'testing'; // tengok boleh tak bypass 
     this.eventStore.add(rec); 
     this.showMsg('Event ' + rec.data.Title + ' was added'); 
     var data; 
     reminder = function (data) { 
      var remind; 
      if (!data) { 
       remind = null; 
      } else { 
       remind = data; 
      } 
      return remind; 
     }; 
     Ext.Ajax.request({ 
      url: '../controller/eventController.php', 
      params: { 
       method: 'create', 
       calendarId: rec.data.CalendarId, 
       eventTitle: rec.data.Title, 
       eventStart: rec.data.StartDate, 
       eventEnd: rec.data.EndDate, 
       eventIsAllDay: rec.data.IsAllDay, 
       eventReminder: rec.data.Reminder, 
       eventIsNew: rec.data.IsNew, 
       leafId: leafId 
      }, 
      success: function (response, options) { 

       var jsonResponse = Ext.decode(response.responseText); 


       if (jsonResponse.success == true) { 
        title = systemLabel; 

       } else { 
        title = systemErrorLabel; 
       } 
       Ext.MessageBox.alert(title, jsonResponse.message); 
      }, 
      failure: function (response, options) { 
       // critical bug extjs 
       var jsonResponse = Ext.decode(response.responseText); 

       Ext.MessageBox.alert(systemErrorLabel, jsonResponse.message); 
      } 
     }); 
    }, 
    scope: this 
}, 

応答出力。

{"success":true,"message":"Record Created","data":{"eventId":13},"eventId":13} 

私の唯一の問題はeventIdです。作成に Firebugのコンソールパラメータ

calendarId 1 
eventEnd 2011-08-11T01:00:00 
eventId 10000 
eventIsAllDay false 
eventIsNew false 
eventReminder 
eventStart 2011-08-11T00:00:00 
eventTitle oh update4d 
leafId 516 
method update 

答えて

0

、イベントウィンドウは、それがサーバーに送信される前には、ローカルデータストアに一意のIDを持っているだけように、新しいレコードに自動インクリメントのIDを追加します。実際のデータベースPKでidを置き換えるためにaddの後に応答を生成するのは、サーバーコードの責任です。それ以降のCRUDアクションは正しいIDを使用します。

+0

だから私はカレンダーがこれをとらないようにコードを変更すべきですか? - > newId ++; Ajaxリクエストデータ[{eventId:new id}]を返信しようとしましたが、それでもchanges.canは返信出力が内部IDに一致する正確なコードを表示していませんか? –

+0

page.yesをリフレッシュすると修正されます。私はeventStore.reload.Butを試みましたが、まったく動作しません。 –

+0

Solve。私はコードをリリースします。しかし、まだ店をrefrestする。 IDを自動的に更新することはできません –