【发布时间】:2015-04-19 09:46:52
【问题描述】:
我正在使用 jaydata 来管理仅限客户端的数据存储。数据通过 SignalR 广播接收。接收到的数据缓存在内存中。内存缓冲区每秒刷新一次到 jaydata 存储并保存。
绑定到 jaydata 存储的 Kendo Grid 不会自动更新。一旦 jaydata saveChanges 方法完成,我需要在 dataSource 上调用 read 方法。下面的代码是定时器触发时调用的方法。
$scope.updateGrid = function () {
if ($scope.allowUpdate) {
var data = $scope.scribeMessages.splice(0, $scope.scribeMessages.length);
if (data.length > 0) {
scribeDb.Messages.addMany(data);
scribeDb.saveChanges().then(function () { $scope.scribeGrid.dataSource.read(); });
}
}
};
在我的 Kendo Grid 中,我将 dataSource 定义如下:
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" });
我期待网格绑定数据源自动检测底层数据存储已更改。
是否需要强制读取数据源?
提前感谢您的帮助。
【问题讨论】:
标签: kendo-ui kendo-grid jaydata