博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实作 ASP.NET 多笔数据离线编辑(转)
阅读量:5972 次
发布时间:2019-06-19

本文共 1661 字,大约阅读时间需要 5 分钟。

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

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

-------------------------------------------------

本帖的示例下载点:
(执行本示例,需要 VS 2008 或 IIS,以及 SQL Server 数据库)
-------------------------------------------------

示例执行画面如下:

2009022500304473.jpg

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

转载地址:http://jmwox.baihongyu.com/

你可能感兴趣的文章
java中的枚举类
查看>>
IE Web 开发支持将迁移到 StackOverflow
查看>>
SQLite教程
查看>>
阳光十六法则
查看>>
Python2.7+selenium2自动化测试环境搭建
查看>>
Vim 7.4
查看>>
【C++】C++0x :: Introduction to some amazing features
查看>>
BZOJ 1084: [SCOI2005]最大子矩阵
查看>>
公文流转数据库建立
查看>>
tzcacm去年训练的好题的AC代码及题解
查看>>
[CF460E]Roland and Rose
查看>>
linux系统开机静态分配ip地址
查看>>
HTTP长连接短连接
查看>>
InputStream转成String
查看>>
测试缺陷分析务实篇-转
查看>>
在浏览器中输入网址后的流程
查看>>
拿什么来拯救你,我的table
查看>>
OpenNI2下简单操作两个体感设备(Xtion与Kinect for Xbox 360)
查看>>
Velocity
查看>>
Day12 前端html
查看>>