C#数据表格(DataGridView)控件的应用案例
作者:zx 发布时间:2023-04-11 11:10:24
我们通过一个完整的实例来实现课程信息管理功能的操作,包括查询、修改、删除课程信息的操作。
为了简化实例,添加课程信息的操作直接在 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应用案例下一页 >
来源:http://c.biancheng.net/view/3040.html


猜你喜欢
- C#调用c++dll文件是一件很麻烦的事情,首先面临的是数据类型转换的问题,相信经常做c#开发的都和我一样把学校的那点c++底子都忘光了吧(
- 在c#中怎样调用VC写的OCX控件,主要有两个关键环节两个关键环节:导入ocx控件,创建实例。1 注册ocx:regsvr32.exe al
- 本实例使用用户和订单的例子做说明: 一个用户可以有多个订单, 一个订单只对应一个用户。(其中应用到注释)1.代码的结构2. 建表语
- 本文实例讲述了Android编程判断SD卡是否存在及使用容量查询实现方法。分享给大家供大家参考,具体如下:1.判断SD卡是否存在 返回tru
- 一、 进程 简单来说,进程是对资源的抽象,是资源的容器,
- Maven依赖:<dependency><groupId>de.rototor.jeuclid</groupI
- 方法重写(Override)和方法重载(Overload)都是面向对象编程中,多态特性的不同体现,但二者本身并无关联,它们的区别犹如马德华之
- 之前的文章都是讲解springmvc+spring+mybatis 的整合,而很少有springmvc+spring+hibernate 因
- 1:在很多APP里点击返回键,都可以看到返回键由亮变为暗2:实现方法也是很简单的(1)新建一个页面<RelativeLayout &n
- > 此文主要通过WinForm来制作一个休息提醒闹钟,通过设置时间间隔进行提醒,避免沉浸式的投入到工作或者学习当中,战斗的同时也要照顾
- 一、基本使用使用示例:// 初始化BigDecimal bd1=new BigDecimal("456");BigDec
- 本文以实例描述了C#实现让窗体永远在窗体最前面显示的方法,具体步骤如下:1、新建一个窗体程序,添加一个Timer以及设置它可用并绑定事件。2
- 首先为大家介绍Andorid5.0原生下拉刷新简单实现。先上效果图;相对于上一个19.1.0版本中的横条效果好看了很多。使用起来也很简单。
- 异步log4j2的location信息打印问题背景:项目改造过程中将log4j2改成异步,发现行号没有打印,于是扒了下官方文档,大概陈述下:
- 本文主要介绍的是一个球形水波的百分比控件,市面上有各种形形色色的百分比控件,我一直觉得水波是最炫的,UI给了我这个机会,然而网上搜了一大堆,
- 本文实例为大家分享了Android使用SoundPool播放音效的具体代码,供大家参考,具体内容如下SoundPool(int maxStr
- 该方法使用的jdk1.6以后自带的分页工具类实现public static void main(String[] args) {  
- Maven工程pom定义jdk版本今天把之前做的项目导进eclipse,然后发现报错,一些类在1.6中不支持,需要将JDK版本设置为1.7,
- 摘要空指针异常(NullPointerException)可以说是Java程序员最容易遇到的问题了,影响说大不大,说小也不小。为了解决这个问
- java * 的方法总结AOP的拦截功能是由java中的 * 来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该