C# 数据窗体实现增删改查(CRUD)源码下载(原)
作者:C/S框架网  发布日期:2011/06/17 23:08:20
  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框架网|原创作品.质量保障.竭诚为您服务

点击下载附件 点击下载附件 (如下载失败,请邮件通知我们寄回给您,或QQ:23404761留言.)
上一篇 下一篇