Winform开发框架之附件管理应用

简介:

在很多常规的管理系统里面,都可能有附件管理的需求,在我做的一系列医疗行业的病人信息管理系统里面,都希望能很好的管理病人的相关资料,分门别类的进行存储,需要的时候可以预览查看,那么这个功能我们可以把它独立做成一个附件管理模块,这样可以在各个系统中集成即可,我曾经在《Winform开发框架之通用附件管理模块》里面介绍过这样的附件模块,从那时候开始了,我需要附件模块的时候,就通过集成起来即可,非常方便高效。

1、附件管理界面展示

附件管理在很多信息化管理系统中很普遍使用,例如我在病人管理系统界面里面,可以在一个界面里面分门别类管理很多影像学的图片资料,通过查看附件,可以看到其中一些图片附件的缩略图,需要进一步查看,可以双击图片即可实现预览效果。

随访信息界面也可以录入一些相关的附件信息。

附件管理的上传界面如下所示,可以从本地选择多个文件一并上传,每个文件上传成功后立即显示状态。

上传后,界面以缩略图进行展示,如果需要删除,勾选“全部选择”、“选择附件”选项即可。

图片双击后可以进行预览,如果其他文件,那么可以下载后打开。

2、附件模块的使用代码展示

1)由于附件管理已经封装好控件了,所以在使用的时候,拖动到界面即可。

在界面后台代码里面,给它绑定相关的属性即可,下面是我们绑定显示附件的操作。

        //PatientInfo在对象存在则为指定对象,新建则是全新的对象,初始化的GUID用于附件上传 
       private void SetAttachInfo(PatientInfo info)
        {
            this.attachBeforeCT.AttachmentGUID = info.BeforeCT;
            this.attachBeforeMRI.AttachmentGUID = info.BeforeMRI;
            this.attachBeforeXRay.AttachmentGUID = info.BeforeXRay;
            this.attachBeforeBitSlice.AttachmentGUID = info.BeforeBitSlice;
            this.attachBeforePicture.AttachmentGUID = info.BeforePicture;

            this.attachMiddlePicture.AttachmentGUID = info.MiddlePicture;
            this.attachMiddleVideo.AttachmentGUID = info.MiddleVideo;
            this.attachMiddleXRay.AttachmentGUID = info.MiddleXRay;

            this.attachAfterCT.AttachmentGUID = info.AfterCT;
            this.attachAfterMRI.AttachmentGUID = info.AfterMRI;
            this.attachAfterXRay.AttachmentGUID = info.AfterXRay;
            this.attachAfterBitSlice.AttachmentGUID = info.AfterBitSlice;
            this.attachAfterPicture.AttachmentGUID = info.AfterPicture;
        }

在图片存储中,我们一般是根据患者姓名和ID号进行存放的,所以附件的目录需要根据参数进行指定,代码如下所示。

        /// <summary>
        /// 当修改患者姓名或者ID号的时候,改变附件的目录位置
        /// </summary>
        private void SetAttachmentPath()
        {
            if (!this.DesignMode)
            {
                string patientName = this.txtName.Text.Trim();
                string IdNumber = this.txtIDNumber.Text.Trim();
                if (!string.IsNullOrEmpty(patientName) && !string.IsNullOrEmpty(IdNumber))
                {
                    string dir = string.Format("{0}.{1}", patientName, IdNumber);
                    this.attachBeforeCT.Init(dir, PatientInfo.ID, Portal.gc.LoginInfo.Name);
                    this.attachBeforeMRI.Init(dir, PatientInfo.ID, Portal.gc.LoginInfo.Name);
                    this.attachBeforeXRay.Init(dir, PatientInfo.ID, Portal.gc.LoginInfo.Name);
                    this.attachBeforeBitSlice.Init(dir, PatientInfo.ID, Portal.gc.LoginInfo.Name);
                    this.attachBeforePicture.Init(dir, PatientInfo.ID, Portal.gc.LoginInfo.Name);

                    this.attachMiddlePicture.Init(dir, PatientInfo.ID, Portal.gc.LoginInfo.Name);
                    this.attachMiddleVideo.Init(dir, PatientInfo.ID, Portal.gc.LoginInfo.Name);
                    this.attachMiddleXRay.Init(dir, PatientInfo.ID, Portal.gc.LoginInfo.Name);

                    this.attachAfterCT.Init(dir, PatientInfo.ID, Portal.gc.LoginInfo.Name);
                    this.attachAfterMRI.Init(dir, PatientInfo.ID, Portal.gc.LoginInfo.Name);
                    this.attachAfterXRay.Init(dir, PatientInfo.ID, Portal.gc.LoginInfo.Name);
                    this.attachAfterBitSlice.Init(dir, PatientInfo.ID, Portal.gc.LoginInfo.Name);
                    this.attachAfterPicture.Init(dir, PatientInfo.ID, Portal.gc.LoginInfo.Name);
                }
            }
        }

里面代码那个Init函数的定义如下所示,这样我们就知道附件属于那个病人的记录,属于那个登陆用户上传的了,方便我们后面对附件进行分类管理和控制。

        /// <summary>
        /// 初始化相关参数
        /// </summary>
        /// <param name="attachmentDir">设置附件的存储目录分类</param>
        /// <param name="owerId">附件组所属的记录ID,如属于某个主表记录的ID</param>
        /// <param name="userId">操作用户ID,当前登录用户</param>
        public void Init(string attachmentDir, string owerId, string userId)

由于附件有独立的存储模块,因此我们不需要为附件的上传以及数据库记录的存储做任何特殊的操作,只需要告诉附件它对应的记录GUID,并初始化它的目录位置即可。

该附件界面以下部分,可以使用在传统Winform中,也可以使用WCF的分布式应用程序中,还可以使用在Web开发里面,如我之前写的Web开发界面中关于附件上传的操作,利用的就是这些内容,只是界面需要重新处理而已。

里面的

 以上就是Winform开发框架中附件管理模块的应用场景和使用代码的展示,希望大家多多建议,吸收更好的意见,做的更好。 

本文转自博客园伍华聪的博客,原文链接:Winform开发框架之附件管理应用,如需转载请自行联系原博主。



目录
相关文章
|
设计模式 安全
详细讲解什么是单例模式
详细讲解什么是单例模式
|
9月前
|
人工智能 自然语言处理 安全
《人工智能与鸿蒙Next携手,开启智慧教育创新之旅》
在数字化时代,人工智能与鸿蒙Next系统的融合为智慧教育带来创新机遇。通过智能学习路径规划、自适应内容推荐、自动作业批改、课堂互动增强等功能,打造个性化学习体验。鸿蒙Next的分布式技术和安全特性确保多设备无缝切换和数据隐私保护。同时,智能资源管理和优质资源共享平台优化教育资源配置,推动教育公平。这一结合为智慧教育注入新活力,助力全面升级。
329 30
|
存储 数据挖掘 BI
数据仓库深度解析与实时数仓应用案例探析
随着数据量的不断增长和数据应用的广泛深入,数据治理和隐私保护将成为数据仓库建设的重要议题。企业需要建立完善的数据治理体系,确保数据的准确性、一致性和完整性;同时加强隐私保护机制建设,确保敏感数据的安全性和合规性。
1064 55
|
弹性计算 容灾 安全
阿里云服务器选购指南!如何选择一款适合自己的阿里云服务器?
阿里云服务器选购指南!如何选择一款适合自己的阿里云服务器?2023阿里云服务器购买流程更新,选购云服务器有两个入口,一个是选择活动机,只需要选择云服务器地域、系统、带宽即可;另一个是在云服务器页面,自定义选择云服务器配置,这种方式购买云服务器较为复杂,需要选付费方式、地域及可用区、ECS实例规格、镜像、网络、公网IP、安全组等配置,阿里云百科来阿里云服务器购买流程指南2023新版教程:
1099 0
阿里云服务器选购指南!如何选择一款适合自己的阿里云服务器?
|
数据管理
宜搭6月继续推出新功能:子表单功能升级及新增关联列表
钉钉宜搭最新升级子表单功能、新增关联列表功能,子表单主要针对数据量、子表填写页、子表详情页和数据管理页的升级。
2933 0
宜搭6月继续推出新功能:子表单功能升级及新增关联列表
|
3天前
|
云安全 数据采集 人工智能
古茗联名引爆全网,阿里云三层防护助力对抗黑产
阿里云三层校验+风险识别,为古茗每一杯奶茶保驾护航!
古茗联名引爆全网,阿里云三层防护助力对抗黑产
|
3天前
|
存储 机器学习/深度学习 人工智能
大模型微调技术:LoRA原理与实践
本文深入解析大语言模型微调中的关键技术——低秩自适应(LoRA)。通过分析全参数微调的计算瓶颈,详细阐述LoRA的数学原理、实现机制和优势特点。文章包含完整的PyTorch实现代码、性能对比实验以及实际应用场景,为开发者提供高效微调大模型的实践指南。
499 1