2015-04-19 58 views
0

我正在使用jaydata來管理僅客戶端數據存儲。數據通過SignalR Broadcast接收。接收到的數據被緩存在內存中。一秒鐘內存緩衝區刷新到jaydata存儲並保存。Jaydata as KendoDataSource不會自動刷新新記錄添加

綁定到jaydata存儲的Kendo網格不會自動更新。一旦jaydata saveChanges方法完成,我需要調用dataSource的read方法。下面的代碼是定時器觸發時調用的方法。

在我的劍道網格,我已經定義了數據源如下:

dataSource: scribeDb.Messages.asKendoDataSource({ 
     pageSize: 20, 
     sort: [{ field: "SequenceId", dir: "desc" }] 
    }) 

我已經定義了實體,實體集,並刻劃爲:

$data.Entity.extend("ScribeMessage", { 
    SequenceId: { type: "string", required: true, key: true, computed: false }, 
    ScribeId: { type: "string", required: true }, 
    Environment: { type: "string", required: true }, 
    LogLevel: { type: "integer", required: true }, 
    Program: { type: "string", required: true }, 
    Subject: { type: "string", required: false }, 
    Message: { type: "string", required: false }, 
    MachineName: { type: "string", required: true }, 
    InstanceId: { type: "string", required: false }, 
    ComponentId: { type: "string", required: false }, 
    Exception: { type: "string", reguired: false }, 
    ServerTime: { type: "date", required: true }, 
    ClientTime: { type: "date", required: true }, 
    User: { type: "string", required: true } 
}); 

$data.EntityContext.extend("ScribeDatabase", { 
    Messages: { type: $data.EntitySet, elementType: ScribeMessage } 
}); 

var scribeDb = new ScribeDatabase({ provider: "indexedDb", databaseName: "ScribeMessages" }); 

我期待網格綁定的數據源自動檢測到底層數據存儲已經改變。

是否有必要強制數據源讀取?

非常感謝您的幫助。

回答

0

預計不會檢測到這些更改。這與您將網格連接到服務器時的行爲相同,您將不會收到更改通知。您可以構建輪詢,也可以自行推送通知。

JayData確實提供了數據改變時,你可以掛接到事件,例如我經常使用

context.Dogs.addEventListener('afterUpdate', function(){ alert('doggy updated'); });

在事件中,你可以告訴你的網格的數據源重新加載。但要確保用戶目前不在編輯內容......我相信這就是爲什麼JayData不會強制重新加載,因爲他們無法確定用戶不在網格上執行某些操作。

玩得開心,JayData和劍道有點不穩定的婚姻。 :)