easyUI的getChanges中的inserted


easyUI中的datagrid、treegrid編輯了數據,可以用getChanges命令來獲取更新情況。按道理,有"inserted"、"updated"、"deleted"三種類型,增改刪嘛,但不知為何,"inserted"我從來沒有獲取到過。

deleted比較沒有問題,只要有remove,就可以獲取;

updated的話,有修改也可以。

對於inserted,有個變通的辦法是,新增的時候,選中新增行,然后beginEdit,再endEdit;這樣該行即可進入updated矣。有一個問題要注意:datagrid、treegrid(其實treegrid繼承自datagrid)每行會有個主鍵,比如id,用於識別行。那么我們只要在新增行的時候,將此id賦一個唯一值,再乘以-1,提交到后台,就可知該行是insert而不是update,從而不會與其他update行混淆。

還有一個注意的問題,就是這些新增行的數據不能齊全,要至少有一個字段沒有值,這樣才能進入到update里,真奇怪。

function InsertItem(nodes,groupAId, node) {
    var _id = getUtc() * -1;
    var _data = {
        'id': _id
        , 'name': node.text
        //, 'seq': 0 //空出一個值不賦,這樣才能進入update。原因不明
        , 'isValid': true
        , 'pId': node.pId
        , 'itemId': node.itemId
        , 'isGroup': false
    };
    _grid.treegrid('append', {
        parent: groupAId,
        data: [_data]
    });
    _grid.treegrid('select', _data.id);
    _grid.treegrid('beginEdit', _data.id);
    _grid.treegrid('endEdit', _data.id);

    return _id;
}


猜想:

通常我們用數據庫的主鍵id來做datagrid的主鍵,其實可以分開來,多設一個字段給easyUI,比如設一個eid,用eid來做datagrid的行主鍵;從后台過來的時候,eid == id。而新增的時候,新增行的eid被賦予唯一值,而id則不賦值。這樣的好處是

1)有可能在getChanges的時候,可以獲取到inserted;

2)不用將 id 賦予一個負值這么折騰

但不想專門去試這個東西。不值得。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM