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: 扫一扫加微信
参考文档:
Winform调用WebApi接口实现增删改查CRUD实例源码 C#源码-Xluo大型三层架构短消息系统源码-源码下载 C#源码-易呼Oacall开源版 1.3-源码下载 C#源码-LebiShop网上商店系统 5.1.17 源码版-源码下载 C#源码-DTcmsV2.0正式版MSSQL源码-源码下载 C#源码-IA企业政府上报系统源码-源码下载 C#源码-SQLServer数据库生成修改工具-源码下载 C#源码-仿赶集网源码-源码下载 C#源码-海益ERP数据管理系统2.0源码-源码下载 C#源码-天生创想OA协同OA办公系统V2017-源码下载 C#源码-调查队数据仓库项目源码-源码下载 C#源码-[整站程序]英语沙龙全站系统 net 2.0_esalon-源码下载 C#源码-[CMS程序]IlgharSite CMS(爱革CMS) v2009 Preview1_ilgharsite2009-源码下载 C#源码-[CMS程序]Zeroone v3.5 Sp1(个人版)_zeroonecms-源码下载 C#源码-[CMS程序]风讯dotNETCMS v1.0 RC1 Build1213 (包含.net2.0框架)_dotnetcms_nt2-源码下载
其它资料:
什么是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内容管理系统 | |