C#数据表格(DataGridView)控件的应用案例

我们通过一个完整的实例来实现课程信息管理功能的操作,包括查询、修改、删除课程信息的操作。

为了简化实例,添加课程信息的操作直接在 SQL Server 数据库中完成。

下面分几个步骤完成。

1) 创建课程信息表创建课程信息表的 SQL 语句如下。

use test;
create table course
(
  id int primary key identity(1,1),
  name varchar(20),
  credit numeric(3,1),
  remark varchar(50)
);

向表中添加数据的语句如下。

insert into course (name, credit, remark) values ('计算机基石 ' , 2, '无');
insert into course (name, credit, remark) values ('C# 程序开发', 2.5 , '机房授课');
insert into course (name, credit, remark) values ('数据库原理',1,'无');
insert into course (name, credit, remark) values ('体育',1,'无');
insert into course (name, credit, remark) values ('职业素养培训',0.5,'无');

在 SQL Server 中执行上述 SQL 语句即可完成课程信息表(course)的创建和数据的添加。

2) 课程信息管理界面的设计在课程信息管理界面中提供了 DataGridView 控件用于显示课程信息,并提供了根据课程名称查找课程信息、修改以及删除的功能。

具体的界面设计如下图所示。

3) 在加载窗体时显示所有课程信息本例中使用编写代码的方式实现 DataGridView 控件的数据绑定,并在窗体的加载事件中加入数据绑定的代码。

由于查询所有课程信息的代码将在后面的修改和删除功能中重复使用,所以单独定义一个方法来实现查询所有课程信息。代码如下。

//窗体加载事件
private void DataGridViewForm_Load(object sender, EventArgs e)
{
  //调用查询全部课程的方法
  QueryAllCourse();

}
//查询全部课程
private void QueryAllCourse()
{
  //数据库连接串
  string connStr = "Data Source=.;Initial Catalog=test;User ID=sa;Password=root";
  //创建SqlConnection的实例
  SqlConnection conn = null;
  try
  {
    conn = new SqlConnection(connStr);
    //打开数据库
    conn.Open();
    string sql = "select * from course";
    //创建SqlDataAdapter类的对象
    SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
    //创建DataSet类的对象
    DataSet ds = new DataSet();
    //使用SqlDataAdapter对象sda将查新结果填充到DataSet对象ds中
    sda.Fill(ds);
    //设置表格控件的DataSource属性
    dataGridView1.DataSource = ds.Tables[0];
    //设置数据表格上显示的列标题
    dataGridView1.Columns[0].HeaderText = "编号";
    dataGridView1.Columns[1].HeaderText = "课程名称";
    dataGridView1.Columns[2].HeaderText = "学分";
    dataGridView1.Columns[3].HeaderText = "备注";
    //设置数据表格为只读
    dataGridView1.ReadOnly = true;
    //不允许添加行
    dataGridView1.AllowUserToAddRows = false;
    //背景为白色
    dataGridView1.BackgroundColor = Color.White;
    //只允许选中单行
    dataGridView1.MultiSelect = false;
    //整行选中
    dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
  }
  catch (Exception ex)
  {
    MessageBox.Show("查询错误!" + ex.Message);
  }
  finally
  {
    if (conn != null)
    {
      //关闭数据库连接
      conn.Close();
    }
  }
}

运行该窗体,效果如下图所示。

4) 完成课程名称的模糊查询在“查询”按钮的单击事件中加入根据课程名称模糊查询的代码,具体如下。

//查询按钮单击事件
private void button1_Click(object sender, EventArgs e)
{
  if (textBox1.Text != "")
  {
    //数据库连接串
    string connStr = "Data Source=.;Initial Catalog=test;User ID=sa;Password=root";
    //创建SqlConnection的实例
    SqlConnection conn = null;
    try
    {
      conn = new SqlConnection(connStr);
      //打开数据库
      conn.Open();
      string sql = "select * from course where name like '%{0}%'";
      //填充占位符
      sql = string.Format(sql, textBox1.Text);
      //创建SqlDataAdapter类的对象
      SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
      //创建DataSet类的对象
      DataSet ds = new DataSet();
      //使用SqlDataAdapter对象sda将查新结果填充到DataSet对象ds中
      sda.Fill(ds);
      //设置表格控件的DataSource属性
      dataGridView1.DataSource = ds.Tables[0];
    }
    catch (Exception ex)
    {
      MessageBox.Show("出现错误!" + ex.Message);
    }
    finally
    {
      if (conn != null)
      {
        //关闭数据库连接
        conn.Close();
      }
    }
  }
}

运行该窗体,查询效果如下图所示。

从上面的运行效果可以看出,在文本框中输入“计算机”,则可以实现查询所有课程 名称中含有“计算机”字样的课程信息。

5) 实现修改功能在 DataGridView 控件中选中一条课程信息,单击“修改”按钮,弹出修改课程信息界面并在该界面中显示要修改的信息,修改界面的设计如下图所示。

选中 DataGridView 控件的一条课程信息,单击“修改”按钮。

“修改”按钮的单击事件中的代码如下。
//修改课程信息
private void button2_Click(object sender, EventArgs e)
{
  //获取DataGridView控件中的值
  //获取课程编号
  string id = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
  //获取课程名称
  string name = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
  //获取课程名称
  string credit = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();
  //获取课程名称
  string remark = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();
  //创建updateForm类的对象,并将课程信息传递给修改界面
  updateForm updateform = new updateForm(id, name, credit, remark);
  //弹出修改信息窗口
  DialogResult dr = updateForm.ShowDialog();
  //判断是否单击确定按钮
  if (dr == DialogResult.OK)
  {
    //调用查询全部课程方法
    QueryAllCourse();
  }
}

修改界面 (UpdateForm) 中的代码如下。

//带参数的构造方法
public updateForm(string id,string name,string credit,string remark)
{
  InitializeComponent();
  textBox1.Text = id;
  textBox2.Text = name;
  textBox3.Text = credit;
  textBox4.Text = remark;
}
//确认按钮单击事件
private void button1_Click(object sender, EventArgs e)
{
  //数据库连接串
  string connStr = "Data Source=.;Initial Catalog=test;User ID=sa;Password=root";
  //创建SqlConnection的实例
  SqlConnection conn = null;
  try
  {
    conn = new SqlConnection(connStr);
    //打开数据库
    conn.Open();
    string sql = "update course set name='{0}',credit='{1}',remark='{2}' where id='{3}'";
    //填充占位符
    sql = string.Format(sql, textBox2.Text, textBox3.Text, textBox4.Text, textBox1.Text);
    //创建SqlCommand类的对象
    SqlCommand cmd = new SqlCommand(sql, conn);
    //执行修改操作的SQL
    cmd.ExecuteNonQuery();
    //弹出成功提示
    MessageBox.Show("修改成功!");
    //设置当前窗体DislogResult结果为OK
    this.DialogResult = DialogResult.OK;
    //关闭窗体
    this.Close();
  }
  catch (Exception ex)
  {
    MessageBox.Show("修改失败!" + ex.Message);
  }
  finally
  {
    if (conn != null)
    {
      //关闭数据库连接
      conn.Close();
    }
  }
}
//取消按钮单击事件
private void button2_Click(object sender, EventArgs e)
{
  //关闭窗体
  this.Close();
}

修改操作的运行效果如下图所示。

6) 实现删除功能为“删除”按钮添加单击事件,将选中的课程信息删除并刷新界面中查询出来的数据。实现的代码如下。

//删除按钮的单击事件
private void button3_Click(object sender, EventArgs e)
{
  //获取DataGridView控件中选中行的编号列的值
  int id = int.Parse(dataGridView1.SelectedRows[0].Cells[0].Value.ToString());
  //数据库连接串
  string connStr = "Data Source=.;Initial Catalog=test;User ID=sa;Password=root";
  //创建SqlConnection的实例
  SqlConnection conn = null;
  try
  {
    conn = new SqlConnection(connStr);
    //打开数据库
    conn.Open();
    string sql = "delect from course where id='{0}'";
    //填充占位符
    sql = string.Format(sql, id);
    //创建SqlCommand类的对象
    SqlCommand cmd = new SqlCommand(sql, conn);
    //执行SQL语句
    cmd.ExecuteNonQuery();
    //弹出消息提示删除成功
    MessageBox.Show("删除成功!");
    //调用查询全部的方法,刷新DataGridView控件中的数据
    QueryAllCourse();
  }
  catch (Exception ex)
  {
    MessageBox.Show("删除失败!" + ex.Message);
  }
  finally
  {
    if (conn != null)
    {
      //关闭数据库连接
      conn.Close();
    }
  }
}

删除操作的运行效果如下图所示。

单击删除消息框中的“确定”按钮,'即可刷新 DataGridView 控件中的数据。< 上一页C# DataGridViewC# DataGridView应用案例下一页 >

到此这篇关于C#数据表格(DataGridView)控件的应用案例的文章就介绍到这了,更多相关C# DataGridView应用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#中改变DataGridView控件边框颜色的方法

    DataGridView是Visual Studio中一个最重要的数据控件.它可以应用在大多数场合,功能强大,使用灵活.本文要重点介绍一下,如果设置DataGridView的边框颜色. 比尔盖次说"Apple机上没有哪一个软件我是觉得应该是微软首创的",这说明盖次对微软软件功能强大的自信心.而乔布斯而说,微软的软件毫无艺术感可言!这说明什么,说明微软的东西--丑! 乔帮主不愧是乔帮主,真是入木三分,直中要害!是的,默认情况下的DataGridView,真是丑!尤其是那个黑色的边框,不是

  • C#中DataGridView动态添加行及添加列的方法

    本文实例讲述了C#中DataGridView动态添加行及添加列的方法.分享给大家供大家参考.具体如下: Datagridview添加列: DataGridViewTextBoxColumn acCode = new DataGridViewTextBoxColumn(); acCode.Name = "acCode"; acCode.DataPropertyName = "acCode"; acCode.HeaderText = "A/C Code&quo

  • C# Datagridview绑定List方法代码

    本文实例讲述了c# DatagridView绑定List的方法,分享给大家供大家参考.具体方法如下: 主要代码如下: IList<Person> lists; public Form2() { InitializeComponent(); lists = new BindingList<Person>(); lists.Add(new Person(2)); this.dataGridView1.DataSource = lists; } 希望本文所述对大家的C#程序设计有所帮助.

  • C#中DataGridView的样式

    本文实例讲述了C#中DataGridView的样式.分享给大家供大家参考.具体如下: 1.设置grid交替行颜色 复制代码 代码如下: public static void SetGridAlternatingRows(DataGridView dg) {     if (dg != null)     {  dg.RowsDefaultCellStyle.BackColor = Color.FromArgb(255, 255, 255);  dg.AlternatingRowsDefaultC

  • C# DataGridView添加新行的2个方法

    可以静态绑定数据源,这样就自动为DataGridView控件添加 相应的行.假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控件动态添加新行的两种方 法: 方法一: 复制代码 代码如下: int index=this.dataGridView1.Rows.Add();this.dataGridView1.Rows[index].Cells[0].Value = "1"; this.dataGridView1.Rows[inde

  • C# DataGridView绑定数据源的方法

    开始以前,先认识一下WinForm控件数据绑定的两种形式,简单数据绑定和复杂数据绑定. 1. 简单的数据绑定 例1 using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["connStr"].ToString())) { SqlDataAdapter sda = new SqlDataAdapter("Select * From T_Class Where F_

  • C#处理datagridview虚拟模式的方法

    本文实例讲述了C#处理datagridview虚拟模式的方法.分享给大家供大家参考.具体如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace VirtualMode { partial class

  • C#窗体控件DataGridView常用设置

    在默认情况下,datagridview的显示效果: 1.禁用最后一行空白. 默认情况下,最后一行空白表示自动新增行,对于需要在控件中进行编辑,可以保留 dataGridView1.AllowUserToAddRows = false; 上述禁用,仅是将用户界面交互的自动新增行禁了,但还是可以通过代码:dataGridView1.Rows.Add();来新增一行空白. 2.禁用'delete'键的删除功能. 默认情况,鼠标选中一整行,按 删除键 可以删除当前一整行 dataGridView1.Al

  • C#中DataGridView常用操作实例小结

    本文实例讲述了C#中DataGridView常用操作.分享给大家供大家参考.具体如下: public void Binder1() { DataTable tableType = DataBase.SQLDBHelper.GetDataTable("select top 200 unit_code,unit_name from unit "); DataTable table = DataBase.SQLDBHelper.GetDataTable("select top 2

  • C#数据表格(DataGridView)控件的应用案例

    我们通过一个完整的实例来实现课程信息管理功能的操作,包括查询.修改.删除课程信息的操作. 为了简化实例,添加课程信息的操作直接在 SQL Server 数据库中完成. 下面分几个步骤完成. 1) 创建课程信息表创建课程信息表的 SQL 语句如下. use test; create table course ( id int primary key identity(1,1), name varchar(20), credit numeric(3,1), remark varchar(50) );

  • C# 解决datagridview控件显示大量数据拖拉卡顿问题

    问题描述: 由于在使用SQL查询大量的数据并一次显示到dataGridView控件,出现拖拉的时候卡顿. 解决方法: 1.首先分页. 2.其次把显示控件设置双buffer. 解决过程如下: 1.设置dataGridView双buffer代码如下,需要引用反射命名空间 Type dgvType = this.dataGridView1.GetType(); PropertyInfo pi = dgvType.GetProperty("DoubleBuffered", BindingFla

  • C#开发WinForm清空DataGridView控件绑定的数据

    使用DataGridView控件绑定数据后有时需要清空绑定的数据,在清除DataGridView绑定的数据时: 1.设置DataSource为null this.dgvDemo.DataSource = null 这样虽然可以清空DataGridView绑定的数据,但是DataGridView的列也会被删掉. 2.用DataGridView.Row.Clear() this.dgvDemo.Rows.Clear() 使用这种方法会报错,提示“不能清除此列表”,报错信息如下: 以上两种方法都不是想

  • DataGridView控件详细介绍

    1何为DataGridView 通过DataGridView控件,可以显示和编辑表格式的数据,而这些数据可以取自多种不同类型的数据源. DataGridView控件具有很高的的可配置性和可扩展性,提供了大量的属性.方法和事件,可以用来对该控件的外观和行为进行自定义.当你需要在WinForm应用程序中显示表格式数据时,可以优先考虑DataGridView(相比于DataGrid等其它控件).如果你要在小型网格中显示只读数据,或者允许用户编辑数以百万计的记录,DataGridView将为你提供一个易

  • 详解DataGridView控件的数据绑定

    目录 一.非绑定模式 二.绑定模式 示例程序: 1.界面设计如下图: 2.代码实现如下: 使用DataGridView控件,可以显示和编辑来自多种不同类型的数据源的表格数据. 将数据绑定到DataGridView控件非常简单和直观,在大多数情况下,只需设置DataSource属性即可.在绑定到包含多个列表或表的数据源时,只需将DataMember属性设置为指定要绑定的列表或表的字符串即可. 一.非绑定模式 所谓的非绑定模式就是DataGridView控件显示的数据不是来自于绑定的数据源,而是可以

  • DataGridView控件常用属性介绍

    通常会设置的DataGridView的属性如下: AllowUserToAddRows - False 指示是否向用户显示用于添加行的选项,列标题下面的一行空行将消失.一般让其消失. AllowUserToDeleteRows - False 指示是否允许用户从DataGridView删除行.一般不允许. AllowUserToOrderColumns - False 指示是否启用手动列重新放置.一般不允许. AllowUserToResizeColumns - True 指示用户是否可以调整列

  • DataGridView控件显示行号的正确代码及分析

    前些天在写个小程序,用到DataGridView,想给它动态的显示行号.不是很费劲GOOGLE了一下,这GOOGLE不要紧,发现了不少问题.以下基本上都是GOOGLE搜索出来的网上的一些解决方法,千篇一律都是这样的: 复制代码 代码如下: private void DataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)         { for (int i = 0; i < e.RowCount; i+

  • C#实现DataGridView控件行列互换的方法

    本文实例讲述了C#实现DataGridView控件行列互换的方法.分享给大家供大家参考.具体如下: 该示例程序是一个Windows窗体应用程序,有左右两个DataGridView控件:dgvLeft和dgvRight dgvRight除时间外的每一行是dgvLeft的一列 private void Form1_Load(object sender, EventArgs e) { //C#中确定控件DataGridView根据内容自动调整列宽长度的属性 //是AutoSizeColumnsMode

  • 实现DataGridView控件中CheckBox列的使用实例

    复制代码 代码如下: /// <summary>        /// 实现DataGridView控件中CheckBox列的使用        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void dgvTradList_Ce

  • WinForm DataGridView控件隔行变色的小例子

    复制代码 代码如下: dgv.Rows[i].DefaultCellStyle.BackColor = System.Drawing.Color.White; 隔行变色 复制代码 代码如下: /// <summary>         /// 隔行变色         /// </summary>         /// <param name="dgv">传入DataGridView控件名称</param>         public

随机推荐