IndexedDB は CRUD 操作に比較的多くのコードを必要とするため、チュートリアルは実装の詳細で過負荷にならないように大幅に簡素化されています。CRUD が動作する完全な例もあります。このパッケージの「/samples/CalendarApp/」フォルダーを確認してください:
http://dhtmlx.com/x/download/regular/dhtmlxScheduler_windows.zip
マルチタッチの問題については、おそらく近いうちに修正されるでしょう。パッケージの現在のバージョンは dhtmlxScheduler3.7 に基づいています。Windows ベースのタッチ デバイス用に改善された 4.0 に更新する予定です。
そして、これはデータベース処理の例で、dhtmlx サイトのアプリで行われる方法と同様です。
//connect to indexedDb and fire the callback on success
function connect(callback){
try{
var db = null;
var req = window.indexedDB.open("SchedulerApp", 1);
req.onsuccess = function (ev) {
db = ev.target.result;
if(callback)//fire a callback on connect
callback(db);
}
req.onupgradeneeded = function(e){
//The event is fired when connecting to the new database, or on version change.
//This is the only place for defining database structure(object stores)
var db = ev.target.result;
if (!db.objectStoreNames.contains("events")) {
//create datastore, set 'id' as autoincremental key
var events = db.createObjectStore("events", { keyPath: "id", autoIncrement: true });
}
}
}catch(e){
}
}
//add js object to the database and fire callback on success
function insertEvent(data, callback) {
connect(function (db) {
var store = db.transaction("events", "readwrite").objectStore("events");
var updated = store.add(data);
updated.onsuccess = function (res) {
callback(res.target.result);
}
});
}
// use all defined above with the dhtmlxScheduler
// when user adds an event into the scheduler - it will be saved to the database
scheduler.attachEvent("onEventAdded", function (id) {
var ev = copyEvent(scheduler.getEvent(id));//where copyEvent is a helper function for deep copying
delete ev.id;//real id will be assigned by the database
insertEvent(ev, function (newId) {
scheduler.changeEventId(id, newId);//update event id in the app
});
return true;
});
ただし、すぐに動作することは保証できません。現時点ではコードをテストできません。また、 MSDNでこれらの記事を確認することをお勧めします。
参考までに、私は DHTMLX で働いています