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#
一.数据字典-基础资料-C/S快速开发框架-标准版V2.3

热门标签
.NET5 .NET6 .NET7 APP Auth-软件授权注册系统 Axios B/S B/S开发框架 Bug Bug记录 C#加密解密 C#源码 C/S CHATGPT CMS系统 CodeGenerator CSFramework.DB CSFramework.EF CSFrameworkV1学习版 CSFrameworkV2标准版 CSFrameworkV3高级版 CSFrameworkV4企业版 CSFrameworkV5旗舰版 CSFrameworkV6.0 CSFrameworkV6.1 DAL数据访问层 Database datalock DbFramework Demo教学 Demo下载 DevExpress教程 DOM EF框架 Element-UI EntityFramework ERP ES6 Excel FastReport GIT HR IDatabase IIS JavaScript LINQ MES MiniFramework MIS NavBarControl Node.JS NPM OMS ORM PaaS POS Promise API Redis SAP SEO SQL SQLConnector TMS系统 Token令牌 VS2022 VSCode VUE WCF WebApi WebApi NETCore WebApi框架 WEB开发框架 Windows服务 Winform 开发框架 Winform 开发平台 WinFramework Workflow工作流 Workflow流程引擎 版本区别 报表 踩坑日记 操作手册 代码生成器 迭代开发记录 基础资料窗体 架构设计 角色权限 开发sce 开发技巧 开发教程 开发框架 开发平台 开发指南 客户案例 快速搭站系统 快速开发平台 毛衫行业ERP 秘钥 密钥 权限设计 软件报价 软件测试报告 软件简介 软件开发框架 软件开发平台 软件开发文档 软件体系架构 软件下载 软著证书 三层架构 设计模式 生成代码 实用小技巧 收钱音箱 数据锁 数据同步 微信小程序 未解决问题 文档下载 喜鹊ERP 喜鹊软件 系统对接 详细设计说明书 新功能 行政区域数据库 需求分析 疑难杂症 蝇量级框架 蝇量框架 用户管理 用户开发手册 用户控件 在线支付 纸箱ERP 智能语音收款机 自定义窗体 自定义组件 自动升级程序