「Winform开发小技巧01」DataGridView的一些用法(上)[亲测有效]

「Winform开发小技巧01」DataGridView的一些用法(上)[亲测有效]DataGridView是winform开发中一个承载数据的载体,我们在窗口增加一个DataGridView控件,可以将从数据库查询得到的整个D

欢迎大家来到IT世界,在知识的湖畔探索吧!

Hello,看官好,感谢点击阅读这篇文章。

首先声明,我不是一个程序员,.net相关的知识完全出于个人兴趣自学的,这个小系列主要分享一些作为小白的我在学习winform过程中踩的一些坑,希望能帮到大家

1、DataGridView赋值与清空

1)赋值

DataGridView是winform开发中一个承载数据的载体,我们在窗口增加一个DataGridView控件,可以将从数据库查询得到的整个DataTable赋值给DataGridView的DataSource,例如下面这样写:

this.dataGridView1.DataSource=dt;

欢迎大家来到IT世界,在知识的湖畔探索吧!

当然,还有第二种方式,那就是一行一行地给DataGridView新增数据,如:

欢迎大家来到IT世界,在知识的湖畔探索吧!this.dataGridView1.Rows.Add(tbMPN.Text.ToUpper(),tbQTY.Text,cbbBOM.Text,cbbPROJECT.Text,tbMEMO.Text);

用第二种方式增加数据,DataGridView不能为空,需要提前新增一列表头,可以用代码判断是否存在列,然后动态增加,我习惯是在增加控件的时候直接在控件上先设置好列名。

「Winform开发小技巧01」DataGridView的一些用法(上)[亲测有效]

2)清空

两种赋值方式,就有两种清空DataGridView的方式

第一种,如果是通过DataSource赋值,清空DataGridView时,需要先将数据重新转化为DataTable,清空DataTable之后,再重新赋值给DataSource,代码如下:

if(this.dataGridView1.DataSource!=null)
{
		DataTable dt = (DataTable)dataGridView1.DataSource;
		dt.Clear();
		dataGridView1.DataSource = dt;
 }

第二种,如果是一行一行地增加数据,清空DataGridView的时候,一句代码就解决了:

欢迎大家来到IT世界,在知识的湖畔探索吧!this. dataGridView1.Rows.Clear();

2、解决DataGridView闪烁的问题

我们发现,在第一次打开窗口和获取数据时,DataGridView会出现闪烁,只要几句代码,就可以解决这个问题:

Type dtGridViewType = this.dataGridView1.GetType();
PropertyInfo pi = dtGridViewType.GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
pi.SetValue(this.dataGridView1, true, null);

3、设置单元格类型

DataGridView呈现数据表格时,默认都是TextBox,当然在日常开发中,我们还会用到ComboBox,CheckBox等,我们可以在增加控件时直接设置,如下图:

「Winform开发小技巧01」DataGridView的一些用法(上)[亲测有效]

也可以在用代码动态增加列时同时设置类型,如:

//新增DataGridViewComboBoxColumn 
DataGridViewComboBoxColumn dgvcbc = dataGridView1.Columns["PROJECT"] as DataGridViewComboBoxColumn;
string sqlstr = "SELECT DISTINCT PROJECT FROM inventory";//这是我的数据库查询语句
DataTable dt1 = new ConnectDB().QueryDB(sqlstr);//这是用了我自己写的连接数据库方法
 for (int j = 0; dt1.Rows.Count - j > 0; j++)
{
     if (!dgvcbc.Items.Contains(dt1.Rows[j][0].ToString()))
        dgvcbc.Items.Add(dt1.Rows[j][0].ToString());
}

非常感谢看到这里,如果我写的有哪里不对,欢迎评论区指正,有什么看法也欢迎评论区讨论哈。
最后,欢迎点赞转发收藏关注喔~

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/18290.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信