实作 ASP.NET 多笔数据离线编辑
無廢話,本帖提供一個 ASP.NET 的示例下載,包括五大功能「多筆編輯 + 離線編輯 + 多人并行寫入沖突偵測 (Concurrent) + 批次寫入數(shù)據(jù)庫 + 保留用戶在 GridView 的輸入值」。
日前版工我要把十幾年前的舊系統(tǒng),翻新成 Web 界面,代碼也要重寫。為了搭配客戶的操作習慣,要能提供「離線」編輯的功能,亦即使用者在 ASP.NET 所做的多個「 創(chuàng)建、修改、刪除」內(nèi)容,要能暫存在內(nèi)存里,等到最后單擊一個「存檔」Button,才一次回寫至數(shù)據(jù)庫。
-------------------------------------------------
本帖的示例下載點:
http://files.cnblogs.com/WizardWu/090225.zip
(執(zhí)行本示例,需要 VS 2008 或 IIS,以及 SQL Server 數(shù)據(jù)庫)
-------------------------------------------------
示例執(zhí)行畫面如下:
* 功能 1 : 多筆編輯
* 功能 2 : 離線編輯 (這個最難)
* 功能 3 : 多人并行寫入沖突偵測 (Concurrent, 同時開啟兩個瀏覽器執(zhí)行此示例,即可測試此一功能)
* 功能 4 : 批次 (Batch) 寫入數(shù)據(jù)庫 + Transaction
* 功能 5 : 保留用戶在 GridView 的輸入值
功能說明:
* 功能 1 : 多筆編輯 :
就是 GridView 每一行每一列都可輸入,這也沒什么,就討人厭的客戶和 SA 要求的功能。另 GridView 的每一行、每一列的控件,如:TextBox,仍可搭配 Validator,或 AJAX 的 FilteredTextBoxExtender 等控件,做用戶的輸入驗證。
* 功能 2 : 離線編輯 :
如上圖,用戶單擊橘色行右方的「新增」按鈕,不會真的寫入數(shù)據(jù)庫,而是將用戶在 FooterRow 輸入的創(chuàng)建數(shù)據(jù),暫存于內(nèi)存的 DataTable 里,用戶并能再持續(xù)創(chuàng)建多筆記錄。要等到單擊左下方的「存檔」按鈕,才會將用戶先前做的所有「創(chuàng)建、修改、刪除」數(shù)據(jù),一次全部寫入數(shù)據(jù)庫,以仿真一些遠古舊系統(tǒng)的操作模式。
* 功能 3 : 多人并行寫入沖突偵測 (Concurrent) :
舍棄 ObjectDataSource 控件的 Concurrent 功能,改用數(shù)據(jù)表里的一個 MODIFY_DT 字段,來判斷是否在同一時間,有兩人或多人同時欲編輯數(shù)據(jù)庫里的同一筆記錄。若是的話,只有先存儲者能正確寫入數(shù)據(jù)庫,并在存儲成功后,將目前時間一并寫入數(shù)據(jù)庫的 MODIFY_DT 字段;后存儲者將被迫放棄,必須先離開此頁后再回來、取得數(shù)據(jù)庫里最新的 MODIFY_DT 字段的最新時間后,才能存儲。
* 功能 4 : 批次寫入數(shù)據(jù)庫 + Transaction :
就是一次「創(chuàng)建、修改、刪除」多筆記錄至數(shù)據(jù)庫,并加上數(shù)據(jù)庫「事務 (Transaction)」,這也沒什么,只要將多個 SQL 語句用「分號 (;)」串連起來即可。唯
一要注意的是,多個語句中的 Parameter Name 不可重復。
* 功能 5 : 保留用戶在 GridView 的輸入值 :
由于「創(chuàng)建」功能內(nèi)嵌在 GridView 的 FooterRow 里,當用戶按下「新增」按鈕后,必須執(zhí)行 GridView.DataBind(),以將創(chuàng)建一筆后的結(jié)果,實時顯示在 GridView 里。但此舉將導致用戶在 GridView 其它既有數(shù)據(jù)行的輸入值遺失,導致操作上的不便。因此我在用戶按下「新增」按鈕后,將其它數(shù)據(jù)行每個控件的輸入值,先暫存至一個 DataTable 里;等到 GridView.DataBind() 之后,再從這個 DataTable 里,將所有的值填回 GridView 的每一行每一列。
最近開發(fā)的都是一些小系統(tǒng),沒機會用多高深的 Framework,或最新最炫的新技術,但必須靠一些硬底子功夫硬干,以應付一些客戶和 SA 不合理的需求。
------------------------
附注:
代碼的注釋都是以繁體中文撰寫的 (繁簡的「行、列」剛好相反),以下為用字對照表:
簡 繁
數(shù)據(jù) - 資料
數(shù)據(jù)庫 - 資料庫
表 - 資料表
行 - 列
列 - 行
記錄 - 記錄
字段 - 欄位
事務 - 交易
內(nèi)存 - 記憶體
控件 - 控制項
------------------------
?
總結(jié)
以上是生活随笔為你收集整理的实作 ASP.NET 多笔数据离线编辑的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 应用squid全面加速web(全)
- 下一篇: 第一次给知名项目贡献代码,有点紧张