WinForm DataGridView增删改查

连接数据库对表进行增删改查

1.绑定数据源

        //做一个变量控制页面刷新
        public static int bs = 0;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            JianSanDA da = new JianSanDA();

            //绑定数据源
            dataGridView1.DataSource = da.Select();
            //设置不自动生成列
            dataGridView1.AutoGenerateColumns = false;
            //取消默认第一行
            dataGridView1.ClearSelection(); 

            JSchoolDA sch = new JSchoolDA();

            //给chaschool指定数据源
            chaschool.DataSource = sch.Select();
            //指定显示的值
            chaschool.DisplayMember = "Sname";
            //后台的value值
            chaschool.ValueMember = "Scode";

            JSchool data = new JSchool();//添加一列
            data.Scode = "qxz";
            data.Sname = "全门派";

            List<JSchool> list = sch.Select();
            list.Add(data);

            chaschool.DataSource = list;
            chaschool.DisplayMember = "Sname";
            chaschool.ValueMember = "Scode";

           chaschool.SelectedValue = "qxz";
        }
        

2.查询

JianSanDA里面的多条件查询方法:注意条件前后加空格

//根据多条条件查询(重载)
        public List<JianSan> Select(string name, string school)
        {
            //做两个恒成立的条件
            string cx1 = " 1=1 ";
            string cx2 = " 1=1 ";
            //根据用户输入的条件判断查询
            if (name != "")//输入了姓名
            {
                cx1 = " Name like @name ";
            }
            if (school != ""&&school !="qxz")//输入了门派且不是全门派
            {
                cx2 = " School = @school ";
            }
            //拼接成完整条件
            string cx = " where "+cx1+" and "+cx2;
            List<JianSan> list = new List<JianSan>();
            _cmd.CommandText = "select * from JianSan " + cx;
            _cmd.Parameters.Clear();
            _cmd.Parameters.AddWithValue("@name","%"+name+"%");
            _cmd.Parameters.AddWithValue("@school",school);
            _conn.Open();
            _dr = _cmd.ExecuteReader();
            if (_dr.HasRows)
            {
                while (_dr.Read())
                {
                    JianSan data = new JianSan();
                    data.Code = _dr[0].ToString();
                    data.Name = _dr[1].ToString();
                    data.Sex = Convert.ToBoolean(_dr[2]);
                    data.School = _dr[3].ToString();
                    data.Birthday = Convert.ToDateTime(_dr[4]);

                    list.Add(data);
                }
            }
            _conn.Close();
            return list;
        }

主窗口查询代码:

//查询
        private void button4_Click(object sender, EventArgs e)
        {
            //取数据
            string name = chaname.Text;
            string school = chaschool.SelectedValue.ToString();
            //根据查询条件,把结果交给datagridview1显示
            //首先需要重载查询方法
            JianSanDA da = new JianSanDA();
            dataGridView1.DataSource = da.Select(name, school);
            dataGridView1.AutoGenerateColumns = false;
        }

3-1.添加

打开新窗体

//添加
        private void button1_Click(object sender, EventArgs e)
        {
            //打开添加窗口
            TianJia tj = TianJia.NewTianJia();
            //显示窗体
            tj.Show();
        }

3-2.子窗体添加界面代码:

    public partial class TianJia : Form
    {
        //储存该类的对象 控制数量
        private static TianJia tj = null;

        private TianJia()
        {
            InitializeComponent();
        }
       //返回对象的方法 一个窗口
        public static TianJia NewTianJia()
        {
            if (tj == null || tj.IsDisposed)
            {
                tj = new TianJia();
            }
            return tj;
        }
        private void TianJia_Load(object sender, EventArgs e)
        {
            //给下拉列表绑定值
            JSchoolDA jda = new JSchoolDA();
            cbschool.DataSource = jda.Select();
            cbschool.DisplayMember = "Sname";
            cbschool.ValueMember = "Scode";
        }
        //确定修改
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBoxButtons btn = MessageBoxButtons.YesNoCancel;
            if (MessageBox.Show("确定要添加吗?", "添加数据", btn) == DialogResult.Yes)
            {
                string _code = txtcode.Text;
                string _name = txtname.Text;
                bool _sex = rdnan.Checked;
                string _school = cbschool.SelectedValue.ToString();
                DateTime _birthday = Convert.ToDateTime(txtbirthday.Text);

                JianSanDA jda = new JianSanDA();
                jda.Add(_code, _name, _sex, _school, _birthday);

                //给Form1的成员变量bs赋值 刷新页面
                Form1.bs = 1;

                //关闭窗口
                this.Close();
            }
        }
    }

4.删除

※删除加确认
MessageBoxButtons btn = MessageBoxButtons.YesNoCancel;
if (MessageBox.Show("确定要删除么?", "删除数据", btn) == DialogResult.Yes)
{

}

主窗口删除代码:

//删除
        private void button2_Click(object sender, EventArgs e)
        {
            //让用户选择是否删除
            MessageBoxButtons btn = MessageBoxButtons.YesNoCancel;
            if (MessageBox.Show("确定要删除数据吗?", "删除数据", btn) == DialogResult.Yes)
            {
                //取出选中行里面绑定的对象
                JianSan data = dataGridView1.SelectedRows[0].DataBoundItem as JianSan;
                //初始化数据访问类 调用删除方法删除数据
                JianSanDA da = new JianSanDA();
                da.Delete(data.Code);

                //确定删除的同时刷新数据
                dataGridView1.DataSource = da.Select();
            }
        }

5-1.主窗体修改代码

 //修改
        private void button3_Click(object sender, EventArgs e)
        {
            //判断是否有选中项
            if (dataGridView1.SelectedRows.Count > 0)
            {
                //取出选中项的主键值
                JianSan zj = dataGridView1.SelectedRows[0].DataBoundItem as JianSan;
                //打出修改窗体
                //XiuGai xg = new XiuGai();——应用单例模式控制只出现一个修改窗口
                XiuGai xg = XiuGai.NewXiuGai(zj.Code);
                //显示窗体
                xg.Show();
                //让修改窗体属于Form1
                //xg.Owner = this;
                //让修改窗体获得焦点
                //xg.Focus();
            }
            else
            {
                MessageBox.Show("没有选中任何项!");
            }
        }

5-2.子窗体修改代码:

public partial class XiuGai : Form
    {
        //用来存储传递来的主键值
        private string Code = "";

        //用来存储该类的对象(控制一个窗口)
        private static XiuGai xg = null;

        public XiuGai()
        {
            InitializeComponent();
        }
        //构造一个有参数的方法
        public XiuGai(string code)
        {
            InitializeComponent();
            this.Code = code;
        }
        //返回对象的方法  单例模式
        public static XiuGai NewXiuGai(string code)
        {
            if (xg == null || xg.IsDisposed)
            {
                xg = new XiuGai(code);
            }
            return xg;
        }

        private void XiuGai_Load(object sender, EventArgs e)
        {
            //给下拉列表绑定值
            JSchoolDA sda = new JSchoolDA();
            cbschool.DataSource = sda.Select();
            cbschool.DisplayMember = "Sname";
            cbschool.ValueMember = "Scode";

            //对界面内容进行初始化
            JianSanDA da = new JianSanDA();
            JianSan data = da.Select(Code);
            txtcode.Text = data.Code;
            txtname.Text = data.Name;
            rdnan.Checked = data.Sex;
            rdnv.Checked = !data.Sex;
            //改下拉列表(school)设置选中项
            cbschool.SelectedValue = data.School;
            txtbirthday.Text = data.Birthday.ToString("yyyy-MM-dd");
        }
        //确定修改数据
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBoxButtons btn = MessageBoxButtons.YesNoCancel;
            if (MessageBox.Show("确定要修改吗?", "修改数据", btn) == DialogResult.Yes)
            {
                string _code = txtcode.Text;
                string _name = txtname.Text;
                bool _sex = rdnan.Checked;
                string _school = cbschool.SelectedValue.ToString();
                DateTime _birthday = Convert.ToDateTime(txtbirthday.Text);

                JianSanDA jda = new JianSanDA();
                jda.Update(_code, _name, _sex, _school, _birthday);

                //给Form1的成员变量bs赋值 调用刷新数据
                Form1.bs = 1;

                //关闭窗口
                this.Close();
            }
        }
    }

6.做一个Timer控件控制刷新

 //用timer 刷新 修改和添加完的数据
        private void timeshuaxin_Tick(object sender, EventArgs e)
        {
            if (bs == 1)
            {
                JianSanDA da = new JianSanDA();
                dataGridView1.DataSource = da.Select();
                bs = 0;
            }
        }

※数据区别显示
//遍历datagridview里面行的集合,取出每一个行
foreach (DataGridViewRow row in dataGridView1.Rows)
{
//将该行里面绑定的数据项取出
Info data = row.DataBoundItem as Info;

//判断是不是男女
if (data.Sex)
{
}
}

时间: 2024-08-09 02:02:32

WinForm DataGridView增删改查的相关文章

WinForm连接数据库增删改查

对象属性 using System; using System.Collections.Generic; using System.Text; namespace LeikuObject { public class TelObject { private int _Code; public int Code { get { return _Code; } set { _Code = value; } } private string _Name; public string Name { ge

asp.net中的DataGridView增删改查加分页

前台页面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="StaffManager.aspx.cs" Inherits="adminmaster_StaffManager" EnableEventValidation="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTM

练习:WinForm--DataGridView增删改查完整版

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; namespace DataGridView增删改查完整版.DataConnection { public class DataConnection { private static string connst

winform窗体(六)——DataGridView控件及通过此控件中实现增删改查

DataGridView:显示数据表,通过此控件中可以实现连接数据库,实现数据的增删改查 一.后台数据绑定:    List<xxx> list = new List<xxx>();      dataGridView1.DataSource = list;      //设置不自动生成列,此属性在属性面板中没有      dataGridView1.AutoGenerateColumns = false;      //取消加载默认选中第一行      dataGridView1

C#在winform中操作数据库,实现数据增删改查

1.前言: 运行环境:VS2013+SQL2008+Windows10 程序界面预览: 使用的主要控件:dataGridview和menuStrip等. 2.功能具体介绍: 1.首先,我们要先实现基本的数据操作,增删改查这几个操作. (1)先定义一个数据库操作的公共类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks

使用DataGridView进行增删改查,并同步到数据库

DataGridView控件具有极高的可配置性和可扩展性.它提供有大量的属性.方法和事件,能够用来对该控件的外观和行为进行自己定义.以下通过一个小样例来展示DataGridView进行增删改查,并同步到数据库的功能. 窗口展示: 用户需求: 1.当窗口显示时,将数据库中用户表中的数据显示出来. 2.选中一行,运行删除操作,同一时候在数据库中对应数据被删除. 3.双击某个数据,进行编辑,或者在空白行加入新的数据,然后点击更新,数据库随之更新. 代码展示: Public Class Form1'代码

DataSet之增删改查操作(DataGridView绑定)

DataSet数据集,数据缓存在客户端内存中,支持断开式连接.DataGridView控件绑定DataSet时,它自动的改变的DS的行的状态,而且在做增删改查的时候,可以借助SqlCommandBuilder类来完成. SqlCommandBuilder必须执行SELECT命令来检索元数据,所以它要求多往返服务器一次,从而增加了应用程序的开销,而且操作的表必须要有主键约束.优点是自动建立insertcommand等命令 1,添加操作 private void button2_Click(obje

winform 窗体实现增删改查(CRUD)共用模式

转载:http://www.csframework.com/archive/2/arc-2-20110617-1632.htm 本站原创文章是有针对性地实现一个功能或一个简单的项目. 有很多刚毕业的学生都有着丰富的理论知识,通过学习本站实例源码,我们相信很快提高您的开发经验.但开发较大型项目,光从实践角度来讲还是不够的,尽管少数学生在校期间开发出一些小软件,总体来讲经验还是不足,需要长时间的积累和学习. 就实现增删改查,不同的开发员会有不同的实现方式.有人会说:不就是实现增删改查嘛,有何难度!邓

DataGridView中进行增删改查

首先我们需要知道是在哪个数据库中的哪个表进行增删改查: 这就需要我们: 建立给连接服务器的类:(可以在方法类中建立) 建立一个对列名进行封装的类:方便数据之间的传接:(学到Linq-sql时这些就简便了) 建立一个方法类:进行增删改查方法的调用: 查询: 删除: 增加:增加数据时,我们一般都是要弹出一个界面进行书写添加: 主界面的增加按钮就是弹出增加界面: 修改:修改时我们也是要弹出界面进行修改,修改就有一个主键项是不能修改的: 点击修改按钮时: 1.要获取选中的修改项: 2.要弹出修改界面: