C# DataGridView使用记录分享

最近使用DataGridView,把其中遇到的问题和一些知识记录下来,以便以后用到的时候可以快速的想起。

1、添加行号

  有时我们在使用DataGridView时会被要求添加在每一行数据前面添加上行号,一边在使用的时候能够准确的了解到当前的数据集合的情况。这里我了解到有两种添加行号的方法,均能正常显示,有需要的可以参考一下。

第一种:

当你设置完成数据源后进行如下的处理:

for ( int i = 0; i < dataGridView2.Rows.Count; i++) //行号
     {
           int j = i + 1;
           dataGridView2.Rows[i].HeaderCell.Value = j.ToString();
      }

通过上面的处理就可以简单的将行号添加了。简单的看来就是循环的给每一行添加,思路比较简洁。

第二种:

  这种方式是使用DataGridview自带的事件进行处理,这个事件就是RowPostPaint,我们可以在该事件中添加相应的处理方法就可以添加行号了,相应的代码为:

 1 private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
 2         {
 3             System.Drawing. Rectangle rectangle = new System.Drawing.Rectangle            (e.RowBounds.Location.X,
 4                 e.RowBounds.Location.Y,
 5                 dataGridView1.RowHeadersWidth - 4,
 6                 e.RowBounds.Height);
 7
 8             TextRenderer.DrawText(e.Graphics,            (e.RowIndex + 1).ToString(),
 9                 dataGridView1.RowHeadersDefaultCellStyle.Font,
10                 rectangle,
11                 dataGridView1.RowHeadersDefaultCellStyle.ForeColor,
12                 TextFormatFlags.VerticalCenter | TextFormatFlags .Right);
13         }

这种方式也可以正常显示。

  上面两种方式本人均通过实践检验,均能正常显示,其他的方式本人暂时没有进行研究。

2、高亮显示某一行

  在我们的实际项目中可能会有这样的要求,当某条数据满足某个条件的时候将这条数据的整行或者当前的单元格高亮显示出来,因为原理都是一样的,这里就记录一下其中的一种情况。具体的实现是非常简单的,如果看了上面添加行号的话,这里就可以很好的理解了,原理都是一样的,这是处理的属性不同而已,具体为:

1 for ( int i = 0; i < dataGridView2.Rows.Count; i++) //行号
2       {
3           if (dataGridView2.Rows[i].Cells["FLAG" ].Value.ToString() == "2") {
4             this.dataGridView2.Rows[i].DefaultCellStyle.BackColor= Color.Red;
5               }
6       }

其实就是跟上面第一种的地方是一样的,处理的属性不一样就是了。

3、添加复选框

  有时候我们会被要求到,我们可以选择数据集的一行或者多行,虽然我们可以通过ctrl键进行实现,但是在实际的工作当中,我们更加喜欢复选框这样一种形式。而这个形式的实现只要我们添加一列用于选择就可以了,我们在添加这一列的时候,选择ColumnType为DataGridViewCheckBoxColumn即可,我们也可以根据需要选择多种形式。

4、犯的一些错误

1、表头与数据库中不对应,显示的数据没有按规则显示

我们在编辑字段的时候我们一般会编辑两个属性,一个是HeaderText,一个是DataPropertyName,前一个是用于显示在界面上的,后一个是与设置的数据集中的字段是一致的。如果后面一个没有进行设置就会出现不按预想的形式显示的问题。顺便有一个小的技巧,当我们不想显示某一列的时候,我们可以设置属性Visible为False即可。

2、通过属性字段来获取单元格的数据出错

  假如我们要进行这样的形式(dataGridView2.Rows[i].Cells["FLAG" ].Value.ToString())进行获取单元格的数据,我们单单设置DataPropertyName属性是不够的,我们还要设置Name属性为FLAG(根据具体的字段进行相应的设置)。

5、说明

  在以后的使用当中,如果还有一些可以分享的东西,我也会继续添加的。

时间: 2024-10-12 14:16:02

C# DataGridView使用记录分享的相关文章

Datax与hadoop2.x兼容部署与实际项目应用工作记录分享

一.概述 Hadoop的版本更新挺快的,已经到了2.4,但是其周边工具的更新速度还是比较慢的,一些旧的周边工具版本对hadoop2.x的兼容性做得还不完善,特别是sqoop.最近,在为hadoop2.2.0找适合的sqoop版本时遇到了很多问题.尝试了多个sqoop1.4.x版本的直接简单粗暴的报版本不兼容问题,其中测了sqoop-1.4.4.bin__hadoop-0.23这个版本,在该版本中直接用sqoop的脚本export HDFS的数据是没有问题的,但是一旦调用JAVA API来进行对H

DataGridView学习记录(一)

1.如何默认创建一个DataGridview为默认单元格数(n行m列) // dataGridViewG1 // this.dataGridViewG1.AllowUserToAddRows = false; this.dataGridViewG1.AllowUserToDeleteRows = false; this.dataGridViewG1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeade

记录分享公司Spring data相关配置

起因 公司Spring Data相关的配置还是有点意思的,不过蛮复杂的...XML很多...我不太喜欢强行记住....所以我打算记录一下配置的大致思路和结构,以后可能会有用.... 总体结构 总体结构大致就是这样..Spring/data这个文件夹主要配置Spring Data相关的配置. data下主要有2个文件夹:datasource和module,还有一些其他的XML和properties XML和properties data-context.xml <import resource=&qu

SqlServer知识点记录分享

知识点介绍 双向检索:这里就不大话概念了,直接说它的作用 ISNULL()函数:判断函数是否有值,如果变量没有赋值就给定指定的值,下面的例子就是如果@TOTALCOUNT变量为NULL那么就赋值为空字符串,如果我们将@TOTALCOUNT变量赋予了初始值那么就打印的是0否则是1,大家可以copy运行一下就知道了 DECLARE @TOTALCOUNT INT IF ISNULL(@TOTALCOUNT,'')='' PRINT '1' ELSE PRINT '0' LTRIM()去除变量的左边空

利用QJM实现HDFS的HA策略部署与验证工作记录分享

1.概述  Hadoop2.X中的HDFS(Vsersion2.0)相比于Hadoop1.X增加了两个重要功能,HA和Federation.HA解决了Hadoop1.X  Namenode中一直存在的单点故障问题,HA策略通过热备的方式为主NameNode提供一个备用者,并且这个备用者的状态一直和主Namenode的元数据保持一致,一旦主NameNode挂了,备用NameNode可以立马转换变换为主NameNode,从而提供不间断的服务.另外,Federation特性,主要是允许一个 HDFS

PHP 微信分享(及二次分享)

js部分: <script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script> var appid = appid; var timestamp = timestamp; var nonceStr = nonceStr; var signature = signature; wx.config({ debug: false, appId: appid, time

Quartz 学习记录1

原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不需要定时任务,但是我觉得这个框架还是蛮有意思的,所以就打算来研究学习一下.记录分享一下我的学习记录. 另外网上有的一些定时任务的时间CRON怎么配置什么的我就不介绍了...烂大街了...我就说说我的理解. 与Spring整合 现在可能不太有不用Spring的地方了吧..Spring与quartz整合

资源分享来源

原文链接:http://blog.csdn.net/bone_ace/article/details/44621709 不管是学习还是娱乐,生活中我们经常需要找一些资源(例如各种教学视频.源代码.破解版的软件,考试资料.报告文档,又或者是最新电影等等),有很多人都无从下手.其实网络是一个非常丰富.好用的资源库,只是看你知不知道途径而已.下面推荐一下鄙人觉得很赞的平台.网站,希望对某天看到这篇博客的人有所帮助吧. (虽然说我这博客无人问津...至少是作为自己的一个总结吧) 网盘.云盘: 云盘是个非

用NPOI将DataGridView中需要的列导出为Excel

NPOI是什么? NPOI是POI的.Net版本,即"N"表示"Net".不论是NPOI还是POI,它们其实都是已经编写好的类库.类库大家并不陌生,我们在建立BLL层,DAL层,Facade层--,是不是都是在创建一个个类库啊.那么这个东西和它们差不多. NPOI干什么的? 提供对Microsoft Office格式的文档读和写的功能.也就是说不仅仅用于对Excel的读和写,还有Word,Power Point等. 为什么要用NPOI 大家可以自己查查NPOI的优势