WebService架构提交数据-生成仅包含修改了字段的数据表
![]() ![]() WebService架构提交数据 使用WebService架构开发的数据库应用软件不适合大批量上传和下载数据,不是技术不能实现,而是广域网络太娇情!因网速限制只能从技术上突破,优化上传和下载的数据是非常重要的工作,本文介绍如何优化上传的数据。 我们可以通过下面两点优化数据: 1. 压缩数据包 2. 上传仅包含修改了字段的数据表 下图展示生成仅包含修改了字段的数据表:
示范程序截图: ![]() ![]() FieldChangedObserver示范程序截图 ![]() C# Code: private void btnSubmit_Click(object sender, EventArgs e) { //生成仅包含修改了字段的数据 DataSet ds = new DataSet(); ds.Tables.Add(_master.ChangedFieldTable); ds.Tables.Add(_detail.ChangedFieldTable); //调用WebService层提交数据 bool success = MyWebService.Submit(ds); if (success) MessageBox.Show("Submit data successfully!"); else MessageBox.Show("An error occurred while submit data via webservice!"); } //来源:C/S框架网(www.csframework.com) QQ:1980854898 观察两个数据表: C# Code: //观察字段 _master = new FieldChangedObserver(ds.Tables[0], "SONO"); _detail = new FieldChangedObserver(ds.Tables[1], "ISID"); C# Code: /// <summary> /// 观察的数据表是否被用户修改数据 /// </summary> public class FieldChangedObserver { private DataTable _observedTable;//被观察的数据表 private List<DataColumn> _changedColumns;//观察到已修改的栏位 private string _primaryKeyFieldName;//主键 /// <summary> /// 构造器 /// </summary> /// <param name="observedTable">被观察的数据表</param> /// <param name="primaryKeyFieldName">主键</param> public FieldChangedObserver(DataTable observedTable, string primaryKeyFieldName) { _observedTable = observedTable; _changedColumns = new List<DataColumn>(); _primaryKeyFieldName = primaryKeyFieldName; _observedTable.ColumnChanged = new DataColumnChangeEventHandler(_observedTable_ColumnChanged); } //当用户修改数据时触发的事件 private void _observedTable_ColumnChanged(object sender, DataColumnChangeEventArgs e) { if (_changedColumns.IndexOf(e.Column) >= 0) return; _changedColumns.Add(e.Column); } /// <summary> /// 返回仅包含已修改栏位的数据表。 /// </summary> public DataTable ChangedFieldTable { get { //获取用户已修改的数据 DataTable changes = _observedTable.GetChanges(); if (changes == null) return _observedTable.Clone(); //删除未修改的栏位 foreach (DataColumn column in _observedTable.Columns) { //不处理主键 if (column.ColumnName.ToUpper() == _primaryKeyFieldName.ToUpper()) continue; //找到未修改的栏位则删除。 if (_changedColumns.IndexOf(column) < 0) changes.Columns.Remove(column.ColumnName); } return changes; } } } //来源:C/S框架网(www.csframework.com) QQ:1980854898 ![]() 扫一扫加作者微信 ![]() ![]() Source code free download!
参考文档:
C/S框架-WebService架构下分页查询数据解决方案 C/S框架-WebService架构用户凭证(令牌)解决方案 源码生成器(ClassGenerator)修改一处Bug C#开发的MDI架构+Access数据库应用程序(增删改查) 修改ASP.Net开发环境下的服务器端口(WebService Server Port) 修改数据保存后重复生成日志记录 提交数据时生成的SQL脚本便于实时跟踪 C/S开发框架企业版数据库改名后需要修改的存储过程、函数和视图 开发技巧:您不能修改别人的数据! 原创:C/S架构快速开发框架通用可配置的数据修改日志解决方案 数据字典窗体根据某个字段类型自动生成改类型的流水序号 CSFramework开发框架支持表格编辑窗体,批量修改表格的数据 C# FieldFitString类:将资料表(DataTable)已修改的资料行数据去左右空格、全角转半角 新手指南-最快速最简单的修改及保存数据方法 C#源码-SQLServer数据库生成修改工具-源码下载
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |