实作 ASP.NET 多笔数据离线编辑
无废话,本帖提供一个 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 多笔数据离线编辑相关推荐
- Asp.net Dynamic Data之三改变编辑和操作数据的现实方式
Asp.net Dynamic Data之三改变编辑和操作数据的现实方式 本专题介绍如何运用RouteCollection 添加或是修改Routing URL规则实现对页面的控制. 默认情况下 从Gl ...
- arcgis for android离线编辑,操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容...
操作方法:直接从 Android 或 iOS 设备访问 Collector for ArcGIS 中的离线编辑内容 摘要 Collector for ArcGIS 会将离线副本存储在 SQLite 数 ...
- 如何在ASP.NET中生成HTML5离线Web应用
传统的Web应用程序有一个很大的症结是当用户的网络连接不好时,应用会加载失败,为了 解决这一问题,HTML5中引入了Web的离线工作的功能.离线功能使得Web应用程序类似于本机应用程序,当断开网络连接 ...
- 在桌面上离线编辑Office Web Apps文档
Would you like to edit your online documents in Office 2010 or 2007 instead of in the Office Web App ...
- Dsm as deepin mate(3):离线编辑初始镜像,让skynas本地验证启动安装/升级
本文关键字:啥是真正的黑群,压缩skynas磁盘布局为5G内 在<dsm as Deepin mate(2)>中,我们讲到了使skynas镜像脱离aliyun ecs真正能运行起来的方法. ...
- arcgis for android离线编辑,ArcGIS for Android离线数据编辑实现原理
实现ArcGIS for Android上的离线数据编辑,具体实现环境及其步骤如下: 一. 环境准备 1. 软件环境 1) ArcGIS Server10用 ...
- 微软MSN推出新一代Live服务 能离线编辑博客
人民网北京11月13日讯 微软MSN今天在京推出新一代Windows Live在线服务.网友只需要注册一个账户,就能使用微软MSN提供的即时通信.邮件.博客.照片管理等众多互联网应用. 据了解,Win ...
- Asp.net MVC2.0系列文章-编辑和删除新闻操作
上一篇文章,我们简单地完成了新闻内容的展示功能(Asp.net MVC2.0系列文章-显示列表和详细页面操作),此篇文章,我们使用Asp.net MVC2.0实现新闻记录的编辑和删除功能. 创建Vie ...
- 【ASP.NET】免费的WebConfig编辑工具
预览截图 下载链接:http://asphere.aspweb.cz/download.aspx 一.认识Web.config文件 Web.config 文件是一个XML文本文件,它用来储存 ASP. ...
最新文章
- 微软向马斯克的人工智能公司OpenAI投资10亿美元
- 【PAT乙级】1084 外观数列 (20 分)
- 苹果平板怎么卸载软件_苹果TF签名丨怎么卸载testflight下载的应用?
- 好用的vp n推荐2020_哪个牌子的沐浴露好,2020年最新沐浴露选购测评,好用好闻易清洗沐浴露品牌推荐...
- [剑指offer]面试题第[45]题[JAVA][把数组排成最小的数][快排][ Comparator][PriorityQueue]
- 从零搭建Redis-Scrapy分布式爬虫
- java steam 排序_Java使用Steams VS TreeMap对地图进行排序
- RTP/RTCP协议与RTSP协议
- 硬盘GPT分区与MBR分区的区别
- C语言实现大小端转换
- 日历java代码_java 日历代码实现
- 读《Android群英传》的一些感想
- cadence常见技巧和错误。。。
- 不要盲目满足用户需求,造成过度设计
- 正式宣布,小米10在高端市场碾压华为,夺下电商平台销量第一名
- 魔兽世界怀旧服哪个服务器金价稳定,魔兽世界:怀旧服金价重回“0.1时代”,稀有材料价格却不降反升...
- Comsol 6.0 安装
- Parrot推出4K迷你版无人机Anafi,仅重320g
- CATIA二次开发——自动导出BOM表
- 太平洋入职测评、线上考试
热门文章
- java 工具类sort_Java 通用排序工具类ListSortUtils
- SpringMVC-HandlerInterceptor拦截器的使用与参数详解
- c语言 二维数组 文库,c语言二维数组练习题
- c语言变量申明和定义区别,C语言中变量定义与声明的区别
- php中命名空间、面向对象、访问控制、接口
- elasticsearch控制返回字段查询三(英文分词)match查询
- JMS学习四(ActiveMQ消息过滤)
- 2020年短视频用户价值研究报告
- jsp 跳到servlet路径_请问如何从jsp中跳到servlet中?
- 作者:贺田田(1985-),男,香港理工大学电子计算学系博士生