首页 > 代码库 > WinForm DataGridView增删改查

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 = http://www.mamicode.com/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 =http://www.mamicode.com/ 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 = http://www.mamicode.com/row.DataBoundItem as Info;

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

WinForm DataGridView增删改查