ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 实作 ASP.NET 多笔数据离线编辑

实作 ASP.NET 多笔数据离线编辑

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-02-25 16:39:22 0 删除 编辑

无废话,本帖提供一个 ASP.NET 的示例下载,包括五大功能「多笔编辑 + 离线编辑 + 多人并行写入冲突侦测 (Concurrent) + 批次写入数据库 + 保留用户在 GridView 的输入值」。

日前版工我要把十几年前的旧系统,翻新成 Web 界面,代码也要重写。为了搭配客户的操作习惯,要能提供「离线」编辑的功能,亦即使用者在 ASP.NET 所做的多个「 创建、修改、删除」内容,要能暂存在内存里,等到最后单击一个「存檔」Button,才一次回写至数据库。

-------------------------------------------------
本帖的示例下载点:
http://files.cnblogs.com/WizardWu/090225.zip
(执行本示例,需要 VS 2008 或 IIS,以及 SQL Server 数据库)
-------------------------------------------------

示例执行画面如下:



* 功能 1 : 多笔编辑
* 功能 2 : 离线编辑 (这个最难)
* 功能 3 : 多人并行写入冲突侦测 (Concurrent, 同时开启两个浏览器执行此示例,即可测试此一功能)
* 功能 4 : 批次 (Batch) 写入数据库 + Transaction
* 功能 5 : 保留用户在 GridView 的输入值


功能说明:

* 功能 1 : 多笔编辑 :
就是 GridView 每一行每一列都可输入,这也没什么,就讨人厌的客户和 SA 要求的功能。但由于 GridView 的记录笔数不固定,因此无法以 Validator、JavaScript、AJAX,针对某个控件的 ID 做验证,必须在 Code-Behind 用 C# 手动撰码做用户的输入验证,这是此示例的缺点。

* 功能 2 : 离线编辑 :
如上图,用户单击橘色行右方的「新增」按钮,不会真的写入数据库,而是将用户在 FooterRow 输入的创建数据,暂存于内存的 DataTable 里,用户并能再持续创建多笔记录。要等到单击左下方的「存檔」按钮,才会将用户先前做的所有「创建、修改、删除」数据,一次全部写入数据库,以仿真一些远古旧系统的操作模式。

* 功能 3 : 多人并行写入冲突侦测 (Concurrent) :
舍弃 ObjectDataSource 控件的 Concurrent 功能,改用数据表里的一个 MODIFY_DT 字段,来判断是否在同一时间,有两人或多人同时欲编辑数据库里的同一笔记录。若是的话,只有先存储者能正确写入数据库,并在存储成功后,将目前时间一并写入数据库的 MODIFY_DT 字段;后存储者将被迫放弃,必须先离开此页后再回来、取得数据库里最新的 MODIFY_DT 字段的最新时间后,才能存储。

* 功能 4 : 批次写入数据库 + Transaction :
就是一次「创建、修改、删除」多笔记录至数据库,并加上数据库「事务 (Transaction)」,这也没什么,只要将多个 SQL 语句用「分号 (;)」串连起来即可。唯
一要注意的是,多个语句中的 Parameter Name 不可重复。

* 功能 5 : 保留用户在 GridView 的输入值 :
由于「创建」功能内嵌在 GridView 的 FooterRow 里,当用户按下「新增」按钮后,必须执行 GridView.DataBind(),以将创建一笔后的结果,实时显示在 GridView 里。但此举将导致用户在 GridView 其它既有数据行的输入值遗失,导致操作上的不便。因此我在用户按下「新增」按钮后,将其它数据行每个控件的输入值,先暂存至一个 DataTable 里;等到 GridView.DataBind() 之后,再从这个 DataTable 里,将所有的值填回 GridView 的每一行每一列。


最近开发的都是一些小系统,没机会用多高深的 Framework,或最新最炫的新技术,但必须靠一些硬底子功夫硬干,以应付一些客户和 SA 不合理的需求。


------------------------
附注:

代码的注释都是以繁体中文撰写的 (繁简的「行、列」刚好相反),以下为用字对照表:

 簡  繁

数据 - 資料
数据库 - 資料庫
表 - 資料表
行 - 列
列 - 行
记录 - 記錄
字段 - 欄位
事务 - 交易
内存 - 記憶體
控件 - 控制項

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-557796/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5321791