最新文章 (全部类别)
明细表支持批量操作删除
C# 图片按钮特效:鼠标移入变浅,移出恢复原样 (ImageButtonHover类)
C# 复制对象属性 CopyProperties扩展方法
线联ERP - 海康威视人脸考勤机设置固定IP、重启设备操作手册
线联ERP - 用户操作手册 - 系统初始化
线联ERP - 什么是主账套?
线联ERP - 用户操作手册 - 公司资料设置
C/S快速开发框架旗舰版CSFrameworkV6.0 - VS开发环境配置
修复BUG: CSFramework.EF框架 Remove<T>, RemoveWhere<T>
使用Xlight FTP文件服务器
印章公章在线免费制作
CSFrameworkV6.1旗舰版 - appsettings.json 配置文件增加参数
推荐:使用Photoshop制作ico图标
C#.NET格式化显示:数字末尾不显示0
SQL脚本:更新主表的完成标记FlagFinish=Y
FastReport.NET 设计器汉化&运行时汉化
VS2026/VS2022 关闭 “自动添加 using 命名空间”
C#将List<T>导出为 CSV 文件(Excel 直接打开,无需第三方组件包)
.NET8+EF.Core开发的大型ERP系统客户端4GB电脑测试报告
线联ERP - LinERP HR+考勤系统正式上线
CSFrameworkV6旗舰版 - 复制单据功能
QMS软件简介 | 成本核算报价系统软件简介
QMS - 五金制品行业成本核算报价系统 - 货币资料
QMS - 五金制品行业成本核算报价系统 - 公共字典管理
QMS - 五金制品行业成本核算报价系统 - 物料类别
QMS - 五金制品行业成本核算报价系统 - 物料管理
QMS - 五金制品行业成本核算报价系统 - 图纸文件管理
QMS - 五金制品行业成本核算报价系统 - 供应商管理
QMS - 五金制品行业成本核算报价系统 - 车型费管理
QMS - 五金制品行业成本核算报价系统 - 制程段配置
QMS - 五金制品行业成本核算报价系统 - 产品咨询
QMS五金制品行业报价系统 - 用户操作手册 - 成本中心核算
QMS五金制品行业报价系统 - 用户操作手册 - 报价单 - Quotation
QMS五金制品行业报价系统 - 用户操作手册 - 成本汇总表
QMS五金制品行业报价系统 - 用户操作手册 - 采购评估
QMS五金制品行业报价系统 - 用户操作手册 - 成本基础资料表
QMS五金制品行业报价系统 - 用户操作手册 - 新品可行性评估
QMS - 成本核算报价管理系统软件截图
QMS五金制品行业报价系统 - 用户操作手册 - 业务员管理
QMS五金制品行业报价系统 - 用户操作手册 - 客户管理
QMS五金制品行业报价系统 - 用户操作手册 - 工艺工序维护
QMS五金制品行业报价系统 - 用户操作手册 - 设备登记
C# 使用 FluentFTP 下载文件提示乱码
DevExpress GridControl 主从表数据(Master/Detail) 应用 - 高级篇
制造行业ERP人工成本核算表
C# 把 List<T> 指定属性的值,赋值给目标对象(列转行)
C#.NET反射给对象赋值(使用TypeConverter类转换)
使用数据日志(sys_LogData)保存数据同步标记
开发框架工具栏按钮图标
ERP操作手册-表格的列被隐藏
.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,在表格中增删
Form - 车辆管理C#
C#将文件格式ANSI为UTF-8
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 AI编程 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数据访问层 DaMeng Database datalock DbFramework DeepSeek Demo教学 Demo实例 Demo下载 DevExpress教程 Docker Desktop DOM ECS服务器 EFCore EF框架 Element-UI EntityFramework ERP ES6 Excel FastReport GIT HR HR考勤系统 IDatabase IIS JavaScript LINQ MES MiniFramework MIS MSSQL MySql NavBarControl NETCore Node.JS NPM OMS Oracle资料 ORM PaaS POS PostgreSql Promise API PSD QMS 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 安装环境 版本区别 报表 备份还原 踩坑日记 操作手册 成本核算系统 达梦数据库 代码生成器 电子线材ERP 迭代开发记录 功能介绍 官方软件下载 国际化 海康威视考勤 基础资料窗体 架构设计 角色权限 开发sce 开发工具 开发技巧 开发教程 开发框架 开发平台 开发指南 客户案例 快速搭站系统 快速开发平台 框架升级 毛衫行业ERP 秘钥 密钥 企业网络维护 权限设计 软件报价 软件测试报告 软件加壳 软件简介 软件开发框架 软件开发平台 软件开发文档 软件授权 软件授权注册系统 软件体系架构 软件下载 软件著作权登记证书 软著证书 三层架构 设计模式 生成代码 实用小技巧 视频下载 收钱音箱 数据锁 数据同步 塑木地板行业ERP 推荐软件 微信小程序 未解决问题 文档下载 喜鹊ERP 喜鹊软件 系统对接 线联ERP 详细设计说明书 新功能 信创 行政区域数据库 需求分析 疑难杂症 蝇量级框架 蝇量框架 用户管理 用户开发手册 用户控件 在线软件 在线支付 纸箱ERP 智能语音收款机 自定义窗体 自定义组件 自动升级程序
联系我们
联系电话:13923396219(微信同号)
电子邮箱:23404761@qq.com
站长微信二维码
微信二维码