zoukankan      html  css  js  c++  java
  • 实作 ASP.NET 多笔数据离线编辑

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

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

    -------------------------------------------------
    本帖的示例下载点:
    https://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 不合理的需求。


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

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

     簡  繁

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

  • 相关阅读:
    云栖大会|盛宴之下,共赴一场视频云的进化论
    云栖大会|感受万物数字化,体验千行视频化
    浅谈语音质量保障:如何测试 RTC 中的音频质量?
    一朵云、一张网、一体化 ——GRTN 打造最佳流媒体场景实践
    穿越时空,跟我一起探索云栖数字谷(2021云栖大会免费送票)
    如何实现 iOS 短视频跨页面的无痕续播?
    如何实现 Android 短视频跨页面的流畅续播?
    揭秘盒马鲜生 Android 短视频秒播优化方案
    SQLServer2012SP1-FullSlipstream-CHS-x64标准版.iso
    mes系统是做什么的?MES是什么全称是什么?
  • 原文地址:https://www.cnblogs.com/WizardWu/p/1397613.html
Copyright © 2011-2022 走看看