C#-从入门到精通-第14章 DataGridView数据控件

【在DataGridView控件中显示数据】
首先使用DataAdapter查询数据,然后用Fill方法填充DataSet,最后设置控件的DataSource属性为DataSet的表格数据。

private void Form1_Load(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection("server=.;database=db_test1;uid=sa;pwd=144159");
            conn.Open();
            SqlDataAdapter da = new SqlDataAdapter("select * from db_table5 ", conn);
            DataSet ds = new DataSet();
            da.Fill(ds,"t5");
            dataGridView1.DataSource = ds.Tables["t5"];
        }

在这里插入图片描述
【获取DataGridView控件中的当前单元格】
通过DataGridView控件的CurrentCell属性。

SqlConnection conn;
        SqlDataAdapter sda;
        DataSet ds = null;
        private void Form1_Load(object sender, EventArgs e)
        {
            conn = new SqlConnection("server=.;database=db_test1;uid=sa;pwd=144159");
            conn.Open();
            sda = new SqlDataAdapter("select * from db_table5 ", conn);
            ds = new DataSet();
            sda.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0];
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //格式化字符串,RowIndex行坐标,ColumnIndex列坐标
            string msg = string.Format("第{0}行,第{1}列", dataGridView1.CurrentCell.RowIndex+1, dataGridView1.CurrentCell.ColumnIndex+1);
            label1.Text = "选中的单元格为:" + msg;
        }

在这里插入图片描述
【直接在DataGridView控件中修改数据】
主要用DataTable的ImportRow方法和DataAdapter的Update方法。实现过程是用DataTable的ImportRow方法将更改后的数据复制到一个DataTable中,再用DataAdapter的Update方法,将数据更新到数据库中。

SqlConnection conn;
        SqlDataAdapter adapter;
        int intindex = 0;
        private void button1_Click(object sender, EventArgs e)
        {
            conn = new SqlConnection("server=.;database=db_test1;uid=sa;pwd=144159");
            SqlDataAdapter sda = new SqlDataAdapter("select * from db_table5",conn);
            DataSet ds = new DataSet();
            sda.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0];
            //禁止显示行标题
            dataGridView1.RowHeadersVisible = false;
            //使用for循环设置控件的列宽
            for (int i = 0; i < dataGridView1.ColumnCount;i++ )
            {
                dataGridView1.Columns[i].Width = 84;
            }
            button1.Enabled = false;
            //设置控件为只读
            dataGridView1.Columns[0].ReadOnly = true;
        }
        private DataTable dbconn(string strSql)
        {
            if (conn.State == ConnectionState.Open)
            {
                conn.Close();
            }
            this.adapter = new SqlDataAdapter(strSql, conn);
            DataTable dtSelect = new DataTable();
            int rnt = this.adapter.Fill(dtSelect);
            return dtSelect;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            if (dbUpdate())
            {
                MessageBox.Show("修改成功!");
            }
        }
        private Boolean dbUpdate()
        { 
            string strSql = "select * from db_table5 ";
            DataTable dtUpdate = new DataTable();
            dtUpdate = this.dbconn(strSql);
            DataTable dtShow = new DataTable();
            dtShow = (DataTable)this.dataGridView1.DataSource;
            dtUpdate.ImportRow(dtShow.Rows[intindex]);
            SqlCommandBuilder CommandBuiler;
            CommandBuiler = new SqlCommandBuilder(this.adapter);
            this.adapter.Update(dtUpdate);
            dtUpdate.AcceptChanges();
            return true;
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            intindex = e.RowIndex;
        }

在这里插入图片描述
【当选中DataGridView控件中的行时显示不同的颜色】
使用控件的SelectionMode、ReadOnly、SelectionBackColor属性。

SqlConnection conn;
        private void Form1_Load(object sender, EventArgs e)
        {
            conn = new SqlConnection("server=.;database=db_test1;uid=sa;pwd=144159");
            SqlDataAdapter sda = new SqlDataAdapter("select * from db_table5", conn);
            DataSet ds = new DataSet();
            sda.Fill(ds);
            dataGridView1.DataSource = ds.Tables[0];
            //设置SelectionMode属性,使控件能够整行选中
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            //设置控件为只读
            dataGridView1.ReadOnly = true;
            //设置背景色为黄绿色
            dataGridView1.DefaultCellStyle.SelectionBackColor = Color.YellowGreen;
        }

在这里插入图片描述
【禁止在DataGridView控件中添加和删除行】
设置控件的公共属性AllowUserToAddRows、AllowUserToDeleteRows、ReadOnly。

dataGridView1.AllowUserToAddRows = false;//禁止添加行
dataGridView1.AllowUserToDeleteRows = false;//禁止删除行
dataGridView1.ReadOnly = true;//只读

【使用Columns和Rows属性添加数据】

private void Form1_Load(object sender, EventArgs e)
        {
            // 指定DataGridView控件显示的列数
            dataGridView1.ColumnCount = 4;
            dataGridView1.ColumnHeadersVisible = true;
            // 设置DataGridView控件标题列的样式,创建对象
            DataGridViewCellStyle columnHeaderStyle = new DataGridViewCellStyle();
            //设置背景色
            columnHeaderStyle.BackColor = Color.Beige;
            //设置字体大小、样式
            columnHeaderStyle.Font = new Font("Verdana", 10, FontStyle.Bold);
            dataGridView1.ColumnHeadersDefaultCellStyle = columnHeaderStyle;
            //设置DataGridView控件的标题列名
            dataGridView1.Columns[0].Name = "编号";
            dataGridView1.Columns[1].Name = "姓名";
            dataGridView1.Columns[2].Name = "年龄";
            dataGridView1.Columns[3].Name = "性别";
            // 建立6行数据
            string[] row1 = new string[] { "0001", "小吕", "28", "男" };
            string[] row2 = new string[] { "0002", "小张", "27", "男" };
            string[] row3 = new string[] { "0003", "小郭", "24", "女" };
            string[] row4 = new string[] { "0004", "小贯", "21", "女" };
            string[] row5 = new string[] { "0005", "小陈", "20", "女" };
            string[] row6 = new string[] { "0006", "小梁", "23", "男" };
            object[] rows = new object[] { row1, row2, row3, row4, row5, row6 };
            foreach (string[] rowArray in rows)//遍历数组
            {
                dataGridView1.Rows.Add(rowArray);//添加数据
            }

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个喜欢弹吉他的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值