C# 数据窗体实现增删改查(CRUD)源码下载(原)
C# 数据窗体实现增删改查(CRUD)源码下载(原)
本站原创文章是有针对性地实现一个功能或一个简单的项目. 有很多刚毕业的学生都有着丰富的理论知识,通过学习本站实例源码,我们相信很快提高您的开发经验。但开发较大型项目,光从实践角度来讲还是不够的,尽管少数学生在校期间开发出一些小软件,总体来讲经验还是不足,需要长时间的积累和学习。
就实现增删改查,不同的开发员会有不同的实现方式.有人会说:不就是实现增删改查嘛,有何难度!邓老不是说过不管黑猫白猫捉到老鼠就是好猫!不要管我用什么方式实现,扯远了离题了. 我相信每一位coder都能实现这些简单功能的。这篇文章的目的是分享本人是如何实现增删改查的,通过这个示范程序希望能帮助到您。有兴趣的话请模仿这个小程序,多动手自然熟练了,熟能生巧嘛!
程序介绍:
1.数据查询页面
主要是查询数据及展示,输入查询条件按查询按钮从MDB数据库获取数据,用DataGrid显示出来。
本文重点是实现增删改查,所以不注重界面美观,如果配合DevExpress组件更加完美了。
2.编辑数据页面
在[数据查询页面]内查询出数据,选中一条记录,点工具栏的[修改]按钮打开编辑数据页面.视数据量的大小可以配置该页,比如增加一些图片什么的.只要认为专业且美观就行. 比如采购订单[审核]功能,可以制做一些单据状态的图片,如"已审核","未批准"之类的红色Stamp图片.
3.解决方案源代码视图
本人习惯了将项目分层,这个解决方案有3个Project。本来只想做一个EXE文件的,总觉得良心不安于是分出两个DLL. 如果认为是多此一举尽管砸砖。
业务逻辑控制:
1.界面设计及控件状态控制(如按钮状态)
2.业务代码.(如增/删/改/查操作数据)
留意按钮状态控制,当编辑数据时新增/修改/删除按钮禁止,否则会出乱子, 取消和保存按钮可用,反之亦然.
注意这段代码,另外还有btnEdit,btnCancel等按钮. (状态控制)
主窗体源代码.
Soruce Code:
扫一扫加微信
本站原创文章是有针对性地实现一个功能或一个简单的项目. 有很多刚毕业的学生都有着丰富的理论知识,通过学习本站实例源码,我们相信很快提高您的开发经验。但开发较大型项目,光从实践角度来讲还是不够的,尽管少数学生在校期间开发出一些小软件,总体来讲经验还是不足,需要长时间的积累和学习。
就实现增删改查,不同的开发员会有不同的实现方式.有人会说:不就是实现增删改查嘛,有何难度!邓老不是说过不管黑猫白猫捉到老鼠就是好猫!不要管我用什么方式实现,扯远了离题了. 我相信每一位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); //显示状态为修改模式
}
{
_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("没有选择要修改的记录!");
}
}
}
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:
扫一扫加微信
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网