新增功能:保存前本地缓存数据,资料暂存解决方案 - Winform开发框架
新增功能:保存前本地缓存数据,资料暂存解决方案 - Winform开发框架
缓存数据|资料暂存 CSFrameworkV5.1旗舰版新增一个重磅功能,我们在保存数据前,需要支持本地缓存,实现资料暂存功能。C/S框架企业版V4、旗舰版V5用户可根据本文提供的解决方案自行升级,若有不明白的地方请联系作者。 解决方案: 1. 界面扩展两个按钮 本文实例在采购订单frmPO窗体扩展了两个按钮,分别是【暂存数据】,【加载暂存】 重写InitButtons方法,扩展两个按钮。 C# Code: public override void InitButtons() { // //省略代码.... // if (this.ButtonAuthorized(ButtonAuthority.EX_02)) { //【暂存数据】按钮 IButtonInfo btnSaveLocal = this.ToolbarRegister.CreateButton("btnSaveLocal", "暂存数据", ToolBarGroup.扩展功能1, Globals.LoadBitmap("32_SaveCache.png"), new Size(57, 28), true, true, this.DoSaveLocal); _buttons.AddButton(btnSaveLocal); //【加载暂存】按钮 IButtonInfo btnLoadLocal = this.ToolbarRegister.CreateButton("btnLoadLocal", "加载暂存", ToolBarGroup.扩展功能1, Globals.LoadBitmap("32_LoadCache.png"), new Size(57, 28), true, true, this.DoLoadLocal); _buttons.AddButton(btnLoadLocal); } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 2. 两个扩展按钮的Click事件 【暂存数据】按钮的Click事件 C# Code: /// <summary> /// 暂存数据 /// </summary> /// <param name="sender"></param> public void DoSaveLocal(IButtonInfo sender) { //表格没记录 if (gvSummary.FocusedRowHandle < 0) return; //自动进入查看模式 if (tcBusiness.SelectedTabPage == tpSummary) this.DoViewContent(sender); var ds = _BLLInstance.CurrentBusiness; if (ds == null || ds.Tables.Count == 0) throw new CustomException("没有数据需要暂存!"); //暂存资料 if (Msg.AskQuestion("确定要暂存资料吗?")) { bool ok = DocCacheLocal.SaveCache(_BLLInstance.CurrentBusiness, "PO"); if (ok) Msg.ShowInformation("暂存资料成功!"); } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 【加载暂存】按钮的Click事件 C# Code: /// <summary> /// 加载暂存文件 /// </summary> /// <param name="sender"></param> public void DoLoadLocal(IButtonInfo sender) { //新增或修改模式下加载暂存资料,要提示用户! if (this.IsAddOrEditMode) { if (!Msg.AskQuestion("您当前操作的资料没有保存,加载暂存会覆盖数据,确定要操作吗?")) return; } //打开暂存文件选择窗体 DocCacheItem item = frmDocCachePicker.Execute("PO"); if (item != null) { //没有初始化DataSet,先要初始化 if (_BLLInstance.CurrentBusiness == null) _BLLInstance.GetDataByKey("-", true); else _BLLInstance.CurrentBusiness = item.DS;//重置(替换)DataSet对象 DataTable summary = _BLL.CurrentBusiness.Tables[_BLL.SummaryTableName];//取主表 DoBindingSummaryEditor(summary); //绑定主表的数据源 this.DoBindingDetailGrid(_BLL.CurrentBusiness);//绑定明细表数据源 //根据记录状态设置窗体操作模式 _UpdateType = UpdateType.None;//默认设置为查看状态 if (_BLLInstance.BusinessTables[0].Rows[0].RowState == DataRowState.Added) _UpdateType = UpdateType.Add; if (_BLLInstance.BusinessTables[0].Rows[0].RowState == DataRowState.Modified) _UpdateType = UpdateType.Modify; if (this.IsAddOrEditMode) this.SetEditMode();//设置按钮状态-新增/修改模式 else this.SetViewMode();//设置按钮状态-查看模式 this.ButtonStateChanged(_UpdateType);//通知窗体,按钮状态改变 this.ShowDetailPage(false); //用户点击ViewContent按钮可以显示Summary页 } else { //Msg.Warning("没有暂存资料!"); } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 选择暂存文件窗体: 3. 修改bllBaseBusiness.CurrentBusiness属性 bllBaseBusiness类,CurrentBusiness属性改为get;set; C# Code: /// <summary> /// 当前正在处理的业务数据 /// </summary> public DataSet CurrentBusiness { get { return _CurrentBusiness; } set { _CurrentBusiness = value; } } //来源:C/S框架网 | www.csframework.com | QQ:23404761 4. 本地缓存文件 文件名格式:【资料类型】-【记录状态】-【暂存时间】.data 文件内容格式:【Base64String(DataSet结构)】+【|分隔符】+【Base64String(DataSet结构)】 5. 两个按钮图标 7. 其他源码文件下载(VIP用户)
扫一扫加作者微信
参考文档:
公共数据缓存和更新机制这块功能好扩展吗? Winform开发框架 - 特殊权限控制(扩展权限和自定义按钮功能) 关于Winform开发框架桥接功能 C#数据库本地缓存技术(Database local cache) 使用[后台数据更新模型]保存主从表数据(C#源码) Winform开发框架功能细节处理集锦 修改数据保存后重复生成日志记录 Winform开发框架核心功能 - 主窗体与模块架构 更新第一条记录保存后没有刷新表格的缓存数据 新增功能输入产品编号及名称自动筛选数据 企业版-用户管理新增功能 用户管理新增功能 开发技巧:删除资料保存日志并检查数据是否能删除 原创文档-Winform开发框架提供通用导入Excel功能界面|C/S框架网 开发框架旗舰版保存数据并重新刷新CurrentBusiness前端缓存数据
其它资料:
什么是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内容管理系统 | |