0

DHTMLxScheduler に基づく通知アプリケーションを作成しています。

IndexedDB for DHTMLxscheduler による CRUD の考え方について詳しく知りたい

私の知る限り、次のウェブサイトは優れた例を示しています

http://www.codeproject.com/Articles/594924/Build-Calendar-App-for-Windows-8-with-dhtmlxSchedu

ただし、データ ストアは永続的ではなく、アプリケーションはマルチタッチ イベント中にフリーズします。

以下を使用して、デフォルトのIndexedDBでCRUDに必要なコーディングを指示するのを手伝ってくれる人はいますか?

    scheduler.attachEvent("onEventDeleted", 
              function(event_id,event_object){
    //add event to the data store
}); 

scheduler.attachEvent("onEventChanged", function(event_id, event_object){
    //update event in the data store 
}); 


scheduler.attachEvent("onEventAdded", function(event_id, event_object){
    //delete event from the data store 
});    

次の例は、IndexedDB http://www.dotnetcurry.com/ShowArticle.aspx?ID=868で統合する方法を示しています。

ただし、これらは異なるフレームワークを共有していますが、元のスケジューラ サンプルは常にコールバックを使用して変更を検出していました。

助けてくれてどうもありがとう!

4

1 に答える 1

0

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 で働いています

于 2013-09-26T08:40:51.387 に答える