无废话,本帖提供一个 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 的每一行、每一列的控件,如:TextBox,仍可搭配 Validator,或 AJAX 的 FilteredTextBoxExtender 等控件,做用户的输入验证。

* 功能 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 不合理的需求。

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

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

 簡  繁

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

实作 ASP.NET 多笔数据离线编辑相关推荐

  1. Asp.net Dynamic Data之三改变编辑和操作数据的现实方式

    Asp.net Dynamic Data之三改变编辑和操作数据的现实方式 本专题介绍如何运用RouteCollection 添加或是修改Routing URL规则实现对页面的控制. 默认情况下 从Gl ...

  2. arcgis for android离线编辑,操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容...

    操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容 摘要 Collector for ArcGIS 会将离线副本存储在 SQLite 数 ...

  3. 如何在ASP.NET中生成HTML5离线Web应用

    传统的Web应用程序有一个很大的症结是当用户的网络连接不好时,应用会加载失败,为了 解决这一问题,HTML5中引入了Web的离线工作的功能.离线功能使得Web应用程序类似于本机应用程序,当断开网络连接 ...

  4. 在桌面上离线编辑Office Web Apps文档

    Would you like to edit your online documents in Office 2010 or 2007 instead of in the Office Web App ...

  5. Dsm as deepin mate(3):离线编辑初始镜像,让skynas本地验证启动安装/升级

    本文关键字:啥是真正的黑群,压缩skynas磁盘布局为5G内 在<dsm as Deepin mate(2)>中,我们讲到了使skynas镜像脱离aliyun ecs真正能运行起来的方法. ...

  6. arcgis for android离线编辑,ArcGIS for Android离线数据编辑实现原理

     实现ArcGIS for Android上的离线数据编辑,具体实现环境及其步骤如下: 一.      环境准备 1.        软件环境 1)        ArcGIS Server10用 ...

  7. 微软MSN推出新一代Live服务 能离线编辑博客

    人民网北京11月13日讯 微软MSN今天在京推出新一代Windows Live在线服务.网友只需要注册一个账户,就能使用微软MSN提供的即时通信.邮件.博客.照片管理等众多互联网应用. 据了解,Win ...

  8. Asp.net MVC2.0系列文章-编辑和删除新闻操作

    上一篇文章,我们简单地完成了新闻内容的展示功能(Asp.net MVC2.0系列文章-显示列表和详细页面操作),此篇文章,我们使用Asp.net MVC2.0实现新闻记录的编辑和删除功能. 创建Vie ...

  9. 【ASP.NET】免费的WebConfig编辑工具

    预览截图 下载链接:http://asphere.aspweb.cz/download.aspx 一.认识Web.config文件 Web.config 文件是一个XML文本文件,它用来储存 ASP. ...

最新文章

  1. 微软向马斯克的人工智能公司OpenAI投资10亿美元
  2. 【PAT乙级】1084 外观数列 (20 分)
  3. 苹果平板怎么卸载软件_苹果TF签名丨怎么卸载testflight下载的应用?
  4. 好用的vp n推荐2020_哪个牌子的沐浴露好,2020年最新沐浴露选购测评,好用好闻易清洗沐浴露品牌推荐...
  5. [剑指offer]面试题第[45]题[JAVA][把数组排成最小的数][快排][ Comparator][PriorityQueue]
  6. 从零搭建Redis-Scrapy分布式爬虫
  7. java steam 排序_Java使用Steams VS TreeMap对地图进行排序
  8. RTP/RTCP协议与RTSP协议
  9. 硬盘GPT分区与MBR分区的区别
  10. C语言实现大小端转换
  11. 日历java代码_java 日历代码实现
  12. 读《Android群英传》的一些感想
  13. cadence常见技巧和错误。。。
  14. 不要盲目满足用户需求,造成过度设计
  15. 正式宣布,小米10在高端市场碾压华为,夺下电商平台销量第一名
  16. 魔兽世界怀旧服哪个服务器金价稳定,魔兽世界:怀旧服金价重回“0.1时代”,稀有材料价格却不降反升...
  17. Comsol 6.0 安装
  18. Parrot推出4K迷你版无人机Anafi,仅重320g
  19. CATIA二次开发——自动导出BOM表
  20. 太平洋入职测评、线上考试

热门文章

  1. java 工具类sort_Java 通用排序工具类ListSortUtils
  2. SpringMVC-HandlerInterceptor拦截器的使用与参数详解
  3. c语言 二维数组 文库,c语言二维数组练习题
  4. c语言变量申明和定义区别,C语言中变量定义与声明的区别
  5. php中命名空间、面向对象、访问控制、接口
  6. elasticsearch控制返回字段查询三(英文分词)match查询
  7. JMS学习四(ActiveMQ消息过滤)
  8. 2020年短视频用户价值研究报告
  9. jsp 跳到servlet路径_请问如何从jsp中跳到servlet中?
  10. 作者:贺田田(1985-),男,香港理工大学电子计算学系博士生