最新文章 (全部类别)
.NETCore WebApi阻止接口重复调用(请求并发操作)
VS2022消除编译警告
“SymmetricAlgorithm.Create(string)”已过时:“Cryptographic factory methods accepting an algorithm name are obsolete. Use the parameterless Create factory method on the algorithm type instead
SHA256Managed/SHA512Managed已过时:Derived cryptographic types are obsolete. Use the Create method on the base type instead
MD5CryptoServiceProvider已过时:Derived cryptographic types are obsolete. Use the Create method on the base type instead
C#使用HttpClient获取IP地址位置和网络信息
判断IP是否是外网IP、内网IP
C#使用HttpClient获取公网IP
WebRequest.Create(string)已过时:WebRequest, HttpWebRequest, ServicePoint, and WebClient are obsolete. Use HttpClient instead
C#根据第三方提供的IP查询服务获取公网外网IP地址
html/dom/js/javascript开发记录
调试ASP.NETCore Web站点 - 清理IISExpress缓存数据(js,css)
EFCore+Oracle根据不同的Schema连接数据库
主程序集成CSFramework.EF 数据库框架(.NET7版本)
CSFramework.EF数据库框架简介(.NET8+EFCore)
迁移ECS服务器:导致ORACLE监听服务启动不了解决方案
SQLite数据库
VS2022编译报错:Visual Studio 容器工具需要 Docker Desktop
.NET 9 预览版+C#13新功能
EFCore禁用实体跟踪
WebApi开发框架V3.0 (.NETCore+EFCore) 增加AppSettings全局参数类
C#获取应用程序所有依赖的程序集
LINQ Expression 多条件复合条件组合(And/Or)
CSFrameworkV6客户案例 - MHR - 宁德时代制造人力资源系统
CS软件授权注册系统V3 - 发布证书
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)
CS软件授权注册系统V3 - 购买方式
CS软件授权注册系统V3 - 试用版下载
CS软件授权注册系统-客户登记(制作证书)
C/S软件授权注册系统V3.0 - 管理员工具
CSFrameworkV6旗舰版开发框架 - 集成软件授权认证系统
CSFramework.Authentication 软件证书管理系统 - 制作软件客户授权证书
CSFramework.Authentication 软件证书管理系统 - MAC地址管理
CSFramework.Authentication 软件授权证书管理系统
Login/Logout接口调用dalUser的Login/Logout方法
C# Newtonsoft.Json.Linq.JObject 转对象
CSFramework.Authentication 软件授权认证系统 - 软件测试报告
C/S架构软件开发平台 - 旗舰版V6.0 - 底层框架迭代开发
C/S架构软件开发平台 - 旗舰版V6.1新功能 - 增加软件授权认证模块
C/S架构软件开发平台 - 旗舰版CSFrameworkV6 Bug修改记录
CS软件授权注册系统V3 - 开发手册 - 软件集成与用户注册
CS软件授权注册系统-模拟MES/ERP用户注册软件
CS软件授权注册系统-发布/部署WebApi服务器(IIS+.NET8+ASP.NETCore)
CS软件授权注册系统-VS2022调试WebApi接口
.NETCore Console控制台程序使用ILogger日志
CS软件授权注册系统-WebApi服务器介绍
ASP.NETCore集成Swagger添加Authorize按钮Bearer授权
CS软件授权注册系统-WebApi服务器配置
.NETCore WebApi发布到IIS服务器无法打开swagger
.NET8/ .NETCore /ASP.NETCore 部署WebApi到IIS服务器需要安装的运行环境
.net敏捷开发,创造卓越

C# 数据窗体实现增删改查(CRUD)源码下载(原)


  C# 数据窗体实现增删改查(CRUD)源码下载(原)
C# 数据窗体实现增删改查(CRUD)源码下载(原)


本站原创文章是有针对性地实现一个功能或一个简单的项目. 有很多刚毕业的学生都有着丰富的理论知识,通过学习本站实例源码,我们相信很快提高您的开发经验。但开发较大型项目,光从实践角度来讲还是不够的,尽管少数学生在校期间开发出一些小软件,总体来讲经验还是不足,需要长时间的积累和学习。


就实现增删改查,不同的开发员会有不同的实现方式.有人会说:不就是实现增删改查嘛,有何难度!邓老不是说过不管黑猫白猫捉到老鼠就是好猫!不要管我用什么方式实现,扯远了离题了. 我相信每一位coder都能实现这些简单功能的。这篇文章的目的是分享本人是如何实现增删改查的,通过这个示范程序希望能帮助到您。有兴趣的话请模仿这个小程序,多动手自然熟练了,熟能生巧嘛!


程序介绍:

1.数据查询页面

主要是查询数据及展示,输入查询条件按查询按钮从MDB数据库获取数据,用DataGrid显示出来。
本文重点是实现增删改查,所以不注重界面美观,如果配合DevExpress组件更加完美了。

贴图图片


2.编辑数据页面

在[数据查询页面]内查询出数据,选中一条记录,点工具栏的[修改]按钮打开编辑数据页面.视数据量的大小可以配置该页,比如增加一些图片什么的.只要认为专业且美观就行. 比如采购订单[审核]功能,可以制做一些单据状态的图片,如"已审核","未批准"之类的红色Stamp图片.

贴图图片


3.解决方案源代码视图


本人习惯了将项目分层,这个解决方案有3个Project。本来只想做一个EXE文件的,总觉得良心不安于是分出两个DLL. 如果认为是多此一举尽管砸砖。

贴图图片




业务逻辑控制:

1.界面设计及控件状态控制(如按钮状态)

2.业务代码.(如增/删/改/查操作数据)

留意按钮状态控制,当编辑数据时新增/修改/删除按钮禁止,否则会出乱子, 取消和保存按钮可用,反之亦然.

注意这段代码,另外还有btnEdit,btnCancel等按钮. (状态控制)

private void btnAdd_Click(object sender, EventArgs e)
{
   _TYPE = OperateType.Add;
   this.ShowData(false); //显示数据
   this.ShowDetailPage(); //显示数据编辑页面
   this.SetEditMode(true); //显示状态为修改模式
}


主窗体源代码.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using vjsdn.EasyEdit.Business;
using System.Diagnostics;

namespace CSFramework.EasyEdit
{
   public partial class frmMain : Form
   {
      private bllUser _BLL = new bllUser();
      private OperateType _TYPE = OperateType.Browse;
      
      //操作类型,新增/修改/显示数据
      private enum OperateType
      {
         Add,
         Edit,
         Browse
      }
      
      public frmMain()
      {
         InitializeComponent();
      }
      
      private void frmMain_Load(object sender, EventArgs e)
      {
         bllService.SetDataBasePath(); //因用到Access,指定一个MDB文件
         
         this.SetEditMode(false);
         
         //打开窗体时显示所有数据.
         //当处理大数据时可初始化查询条件或查询少量数据
         btnQuery.PerformClick();
      }
      
      private void btnQuery_Click(object sender, EventArgs e)
      {
         dataGridView1.DataSource = null;
         DataTable dt = _BLL.Search(txt_UserID.Text, txt_UserName.Text);
         dataGridView1.DataSource = dt;
      }
      
      //数据操作两种状态.1:数据修改状态 2:查看数据状态
      private void SetEditMode(bool isEdit)
      {
         btnAdd.Enabled = !isEdit;
         btnEdit.Enabled = !isEdit;
         btnQuery.Enabled = !isEdit;
         btnDelete.Enabled = !isEdit;
         btnView.Enabled = !isEdit;
         btnSave.Enabled = isEdit;
         btnCancel.Enabled = isEdit;
         
         txtUserID.Enabled = isEdit;
         txtUserName.Enabled = isEdit;
      }
      
      private void btnAdd_Click(object sender, EventArgs e)
      {
         _TYPE = OperateType.Add;
         this.ShowData(false);
         this.ShowDetailPage();
         this.SetEditMode(true);
      }
      
      private void btnEdit_Click(object sender, EventArgs e)
      {
         if (dataGridView1.CurrentRow != null)
         {
            _TYPE = OperateType.Edit;
            this.ShowData(true);
            this.ShowDetailPage();
            this.SetEditMode(true);
         }
         else
         MessageBox.Show("没有选择要修改的记录!");
      }
      
      private void ShowData(bool bindData)
      {
         txtUserID.Clear();
         txtUserName.Clear();
         
         if (bindData && dataGridView1.CurrentRow != null)
         {
            DataRow dr = (dataGridView1.CurrentRow.DataBoundItem as DataRowView).Row;
            txtUserID.Text = dr["UserID"].ToString();
            txtUserName.Text = dr["UserName"].ToString();
         }
         
         txtUserID.Focus();
      }
      
      private void btnSave_Click(object sender, EventArgs e)
      {
         try
         {
            bool ret = false; //保存结果
            
            DataRow data = CreateRow();
            
            if (_TYPE == OperateType.Add)
            ret = _BLL.AddUser(data);
            else if (_TYPE == OperateType.Edit)
            ret = _BLL.UpdateUser(data);
            
            if (ret) //保存成功
            {
               _TYPE = OperateType.Browse;
               SetEditMode(false);
               this.ShowDetailPage();
               
               btnQuery.PerformClick();//刷新数据
            }
            else
            {
               MessageBox.Show("保存失败");
            }
         }
         catch (Exception ex)
         {
            MessageBox.Show(ex.Message);
         }
      }
      
      //创建一个DataRow,用于保存数据
      //严格要求的话这里应该要使用数据模型,如建立一个User类
      //本文重点是演示增删改查,所以忽略了数据模型.
      //易学网 http://www.vjsdn.com/bbs/bbsTopicDetails.aspx?pid=587
      //这个帖内讲到三层体系结构应用实例
      private DataRow CreateRow()
      {
         DataRow row = this.GetCurrentRow();
         row["UserID"] = txtUserID.Text;
         row["UserName"] = txtUserName.Text;
         return row;
      }
      
      //获取表格中选择的记录DataRow
      private DataRow GetCurrentRow()
      {
         if (dataGridView1.CurrentRow == null) return null;
         
         DataRowView dv = dataGridView1.CurrentRow.DataBoundItem as DataRowView;
         return dv.Row;
      }
      
      private void btnCancel_Click(object sender, EventArgs e)
      {
         if (AskQuestion("确定要取消吗?"))
         {
            _TYPE = OperateType.Browse;
            SetEditMode(false);
            this.ShowDetailPage();
         }
      }
      
      private bool AskQuestion(string msg)
      {
         return DialogResult.Yes == MessageBox.Show(msg, "易学网 (www.vjsdn.com)", MessageBoxButtons.YesNo);
      }
      
      private void btnDelete_Click(object sender, EventArgs e)
      {
         if (AskQuestion("确定要删除吗?"))
         {
            DataRow row = this.GetCurrentRow();
            if (row == null) return;
            
            bool ret = _BLL.DeleteUser(row["UserID"].ToString());
            if (ret)
            MessageBox.Show("删除成功");
            else
            MessageBox.Show("删除失败!");
            
            btnQuery.PerformClick();
         }
      }
      
      private void btnAbout_Click(object sender, EventArgs e)
      {
         new frmAboutVjsdn().Show();
      }
      
      private void btnVJSDN_Click(object sender, EventArgs e)
      {
         Process.Start("http://www.vjsdn.com");
      }
      
      private void ShowSummaryPage()
      {
         tabControl1.SelectedIndex = 0;
      }
      
      private void ShowDetailPage()
      {
         tabControl1.SelectedIndex = 1;
         
         if (_TYPE == OperateType.Add)
         lblState.Text = "新增数据 Add Data Mode";
         
         if (_TYPE == OperateType.Edit)
         lblState.Text = "修改数据 Edit Data Mode";
         
         if (_TYPE == OperateType.Browse)
         lblState.Text = "显示数据 Browse Data Mode";
      }
      
      private void btnView_Click(object sender, EventArgs e)
      {
         if (dataGridView1.CurrentRow != null)
         {
            _TYPE = OperateType.Browse;
            this.ShowData(true);
            this.ShowDetailPage();
            this.SetEditMode(false);
         }
         else
         MessageBox.Show("没有选择要修改的记录!");
      }
   }
}



Soruce Code:




C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
上一篇:C#进程管理器源码(Managing .Net Process C#)
下一篇:C#委托(Delegate)事件(Event)应用详解 (原)
评论列表

发表评论

评论内容
昵称:
关联文章

C# 数据实现增删(CRUD)下载()
Winform调用WebApi接口实现增删CRUD实例
Winform增删基础框架|C/S框架网
表单上实现增删,除了生成的BLL,DAL和ORM表,还需要处理什么?
C# Winform增删快速开发框架|C/S框架网
C#开发的MDI架构+Access数据库应用程序(增删)
新增的基础资料,Toolbar上没有增删按钮?
CSFramework.WebApi开发框架模拟Web用户端登录、调用WebApi接口增删数据
增删打印审核锁定 数据操作常用图标 32X32
新建基类frmBaseGridEditForm,在表格中增删
C#将文件格式ANSI为UTF-8
Form - 车辆管理C#
C#通用勾选复选 ()
Form - 生产计划排程C#
C#.Net WCF实例详解及下载
Winform查询数据对话与选择资料实现|C/S框架网
DevExpress XtraReport报表实例下载(C#)
自定义消息 - 实例 - C/S快速开发框架旗舰版V5
CSFrameworkV6旗舰版 - 单表基础资料完整C#
代码生成器 CodeGenerator - 将加入到VS解决方案

热门标签
软件著作权登记证书 .NET .NET Reactor .NET5 .NET6 .NET7 .NET8 .NET9 .NETFramework APP AspNetCore AuthV3 Auth-软件授权注册系统 Axios B/S B/S开发框架 B/S框架 BSFramework Bug Bug记录 C#加密解密 C#源码 C/S CHATGPT CMS系统 CodeGenerator CSFramework.DB CSFramework.EF CSFramework.License CSFrameworkV1学习版 CSFrameworkV2标准版 CSFrameworkV3高级版 CSFrameworkV4企业版 CSFrameworkV5旗舰版 CSFrameworkV6.0 CSFrameworkV6.1 CSFrameworkV6旗舰版 DAL数据访问层 Database datalock DbFramework Demo教学 Demo实例 Demo下载 DevExpress教程 Docker Desktop DOM ECS服务器 EFCore EF框架 Element-UI EntityFramework ERP ES6 Excel FastReport GIT HR IDatabase IIS JavaScript LINQ MES MiniFramework MIS MySql NavBarControl NETCore Node.JS NPM OMS Oracle资料 ORM PaaS POS Promise API PSD RedGet Redis RSA SAP Schema SEO SEO文章 SQL SQLConnector SQLite SqlServer Swagger TMS系统 Token令牌 VS2022 VSCode VS升级 VUE WCF WebApi WebApi NETCore WebApi框架 WEB开发框架 Windows服务 Winform 开发框架 Winform 开发平台 WinFramework Workflow工作流 Workflow流程引擎 XtraReport 安装环境 版本区别 报表 备份还原 踩坑日记 操作手册 达梦数据库 代码生成器 迭代开发记录 功能介绍 国际化 基础资料窗体 架构设计 角色权限 开发sce 开发工具 开发技巧 开发教程 开发框架 开发平台 开发指南 客户案例 快速搭站系统 快速开发平台 框架升级 毛衫行业ERP 秘钥 密钥 权限设计 软件报价 软件测试报告 软件加壳 软件简介 软件开发框架 软件开发平台 软件开发文档 软件授权 软件授权注册系统 软件体系架构 软件下载 软件著作权登记证书 软著证书 三层架构 设计模式 生成代码 实用小技巧 视频下载 收钱音箱 数据锁 数据同步 微信小程序 未解决问题 文档下载 喜鹊ERP 喜鹊软件 系统对接 详细设计说明书 新功能 信创 行政区域数据库 需求分析 疑难杂症 蝇量级框架 蝇量框架 用户管理 用户开发手册 用户控件 在线支付 纸箱ERP 智能语音收款机 自定义窗体 自定义组件 自动升级程序
联系我们
联系电话:13923396219(微信同号)
电子邮箱:23404761@qq.com
站长微信二维码
微信二维码