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

  有时我们在使用DataGridView时会被要求添加在每一行数据前面添加上行号,一边在使用的时候能够准确的了解到当前的数据集合的情况。这里我了解到有两种添加行号的方法,均能正常显示,有需要的可以参考一下。
第一种:
 当你设置完成数据源后进行如下的处理:
for ( int i = ; i < dataGridView2.Rows.Count; i++) //行号
{
int j = i + ;
dataGridView2.Rows[i].HeaderCell.Value = j.ToString();
}

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

第二种:
   这种方式是使用DataGridview自带的事件进行处理,这个事件就是RowPostPaint,我们可以在该事件中添加相应的处理方法就可以添加行号了,相应的代码为:
 private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
System.Drawing. Rectangle rectangle = new System.Drawing.Rectangle
           (e.RowBounds.Location.X,
e.RowBounds.Location.Y,
dataGridView1.RowHeadersWidth - ,
e.RowBounds.Height); TextRenderer.DrawText(e.Graphics,
           (e.RowIndex + ).ToString(),
dataGridView1.RowHeadersDefaultCellStyle.Font,
rectangle,
dataGridView1.RowHeadersDefaultCellStyle.ForeColor,
TextFormatFlags.VerticalCenter | TextFormatFlags .Right);
}

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

  上面两种方式本人均通过实践检验,均能正常显示。

第三种:

  private void dgv_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
e.Row.HeaderCell.Value = (e.Row.Index + ).ToString();
}

这种方式也能达到相应的效果。

2、高亮显示某一行

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

 for ( int i = ; i < dataGridView2.Rows.Count; i++)
{
if (dataGridView2.Rows[i].Cells["FLAG" ].Value.ToString() == "") {
this.dataGridView2.Rows[i].DefaultCellStyle.BackColor= Color.Red;
}
}

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

3、添加复选框
  有时候我们会被要求到,我们可以选择数据集的一行或者多行,虽然我们可以通过ctrl键进行实现,但是在实际的工作当中,我们更加喜欢复选框这样一种形式。而这个形式的实现只要我们添加一列用于选择就可以了,我们在添加这一列的时候,选择ColumnType为DataGridViewCheckBoxColumn即可,我们也可以根据需要选择多种形式。
4、犯的一些错误
 1、表头与数据库中不对应,显示的数据没有按规则显示
   我们在编辑字段的时候我们一般会编辑两个属性,一个是HeaderText,一个是DataPropertyName,前一个是用于显示在界面上的,后一个是与设置的数据集中的字段是一致的。如果后面一个没有进行设置就会出现不按预想的形式显示的问题。顺便有一个小的技巧,当我们不想显示某一列的时候,我们可以设置属性Visible为False即可。
 2、通过属性字段来获取单元格的数据出错
  假如我们要进行这样的形式(dataGridView2.Rows[i].Cells["FLAG" ].Value.ToString())进行获取单元格的数据,我们单单设置DataPropertyName属性是不够的,我们还要设置Name属性为FLAG(根据具体的字段进行相应的设置)。补充:DataPropertyName为设置数据的时候使用,NAME为获取数据的使用。
5、说明
  在以后的使用当中,如果还有一些可以分享的东西,我也会继续添加的。
 
 
 

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

  1. 【Java分享客栈】从线上环境摘取了四个代码优化记录分享给大家

    前言 因为前段时间新项目已经完成目前趋于稳定,所以最近我被分配到了公司的运维组,负责维护另外一个项目,包含处理客户反馈的日常问题,以及对系统缺陷进行优化. 经过了接近两周的维护,除了日常问题以外,代码 ...

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

    起因 公司Spring Data相关的配置还是有点意思的,不过蛮复杂的...XML很多...我不太喜欢强行记住....所以我打算记录一下配置的大致思路和结构,以后可能会有用.... 总体结构 总体结构 ...

  3. 乐动ld06激光雷达sdk改bug记录分享

    前言: 工作中,有使用过乐动ld06款激光雷达,此款雷达将常规雷达的转动的电机部分内置于自己的保护罩内,减少了雷达本身转动积灰等其他外界影响,探测半径是12m,是一款不错的雷达. 不过今天的主要内容不 ...

  4. SqlServer知识点记录分享

    知识点介绍 双向检索:这里就不大话概念了,直接说它的作用 ISNULL()函数:判断函数是否有值,如果变量没有赋值就给定指定的值,下面的例子就是如果@TOTALCOUNT变量为NULL那么就赋值为空字 ...

  5. Win7下Redmine2.0.3+Mysql55+Ruby1.8.7成功安装记录分享

    准备软件: Ruby 下载网页: http://rubyforge.org/frs/?group_id=167&release_id=46836 http://files.rubyforge. ...

  6. iFreeThinking - 记录生活,分享思考

    http://www.ifreethinking.com iFreeThinking.com 是一个非营利性个人博客网站.开于 2014 年,博客主要记录分享一些思考和感悟. 文章列表:http:// ...

  7. 【腾讯Bugly干货分享】Android性能优化典范——第6季

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/580d91208d80e49771f0a07c 导语 这里是Android性能优 ...

  8. 分享公司Basecode的用法

    主题 公司在basecode的用法上是比较有新意的,所以准备记录分享下公司的用法. 说明 basecode公司的一个主要用途就是用于一些基础的代码表,参数表的前台操作.这些表有很多,用spring d ...

  9. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

随机推荐

  1. 20145224&20145238 《信息安全系统设计基础》 第四次实验

    20145224&20145238 <信息安全系统设计基础>第四次实验 课程:信息安全系统设计基础 班级:1452 姓名:陈颢文 荆玉茗 学号:20145224 20145238 ...

  2. 简单谈一谈JavaScript中的变量提升的问题

    1,随笔由来 第一天开通博客,用于监督自己学习以及分享一点点浅见,不出意外的话,应该是一周一更或者一周两更.  此博客所写内容主要为前端工作中遇上的一些问题以及常见问题,在此基础上略微发表自己的一点浅 ...

  3. 如何修改file控件

    在移动web开发过程中,常常会用到input file这控件,但css不能修改其样式往往让开发者很头疼,直接把他放到页面上又不美观: 下面介绍的方法,可以将该控件的显示样式替换成一个图标:   该方法 ...

  4. python 汇总

    TypeError: ReadExcelList() takes exactly 1 argument (2 given) 传入的参数有问题

  5. VS2013 破解

    密钥 : BWG7X-J98B3-W34RT-33B3R-JVYW9

  6. 在RichFaces中使用Facelets模板

    在RichFaces中使用Facelets模板 目录 Facelets简介 Facelets标签 创建相应文件 Facelets简介 Facelets是用来构建JSF应用程序的默认视图技术.它为表现层 ...

  7. 安装Windows 7

    -EndFragment--> 1.安装win7_64位步骤: https://www.douban.com/note/224102684/ 安装Win7系统为硬盘分区的方法 笨小康2012-0 ...

  8. [css3]叉叉旋转效果

    .close_frame{display:inline-block;height:14px;width:14px;background:url("../images/closeiframe. ...

  9. Bootstrap<基础四> 代码

    Bootstrap 允许您以两种方式显示代码: 第一种是 <code> 标签.如果您想要内联显示代码,那么您应该使用 <code> 标签. 第二种是 <pre> 标 ...

  10. 端口限制情况下php+xdebug环境配置

    PHP程序在开发的时候调试是比较方便的,大体情况下,输出,打log是可以解决几乎所有问题. 但是还不够,有些问题,用打log的形式定位问题是相当痛苦的事情,有些时候测试环境没配好的话,你可能需要做许多 ...