2019/09/20

DevExtreme DataGrid Demo with DataSnap Server - The Front End

資料來源:網路


前面提到 DevExtreme DataGrid Demo with DataSnap Server 1 + 2,已經知道 DevExtreme DataGrid 是如何向後端伺服器取得資料,其它的『新增』、『更新』、『刪除』要如何實作呢?

在實作之前,要先知道 DataGrid 是如何動作的。


新增

在單筆新增後,可以看到送出的 POST 參數,是 JSON Object。
可以看到後端在新增後回傳完整的單筆記錄,連之前 Get 所沒有的欄位資料也全部出現。


修改

修改使用 PUT,而且只會送出主鍵資料及被修改的欄位資料。
 後端也是回傳完整的資料內容,應該是連同其它可能異動的畫面欄位一併刷新。


刪除

刪除使用 DELETE,僅送出主鍵資料。
 刪除資料就不會再回傳任何資訊。

單筆資料的處理到這裡可說是相當簡單易懂,但人生永遠不會是如此簡單。

DataGrid 批次處理是如何做的?


按照歷史經驗,可採用的批次處理作法有:
  1. 畫面批次編修後存檔,仍然逐筆和後端連結。
  2. 畫面批次編修後存檔,將編修的資料整包送到後端,由後端另行解析。

究竟 DataGrid 的背景是如何處理的,我們可以在 CodePen調整:
editing.mode =【batch】,設定後 CodePen 會主動重載程式內容。
 可以看到右上角多了【存檔】和【取消存檔】按鈕。

批次新增、修改、刪除一氣呵成。

在經過一連串的新增、修改和刪除資料後,可以看到畫面上異動的資料會變色高亮。

按下【存檔】後,可以看到 DataGrid 採用的是【1】逐筆向後端溝通的流程。

結論:

前端物件的行為會影響到後端程式的架構,所以事先了解前端物件如何作動是非常重要的。
然而DataGrid的批次處理採用逐筆更新,這會影響到後端的交易(Transaction)行為,尤其是 Master-Details 架構下,並不適用 ACID,使用上必須特別留意。

如果有什麼設定可以讓 DataGrid 使用整包上傳,請讓我知道。:D

See also:

沒有留言:

張貼留言