最近使用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. 7 -- Spring的基本用法 -- 3...

    7.3 Spring 的核心机制 : 依赖注入 Spring 框架的核心功能有两个. Spring容器作为超级大工厂,负责创建.管理所有的Java对象,这些Java对象被称为Bean. Spring容 ...

  2. Leetcode--Merge Two Sorted Lists

    static ListNode *mergeTwoLists(ListNode *l1, ListNode *l2) { ListNode *temp = ); ListNode *head = te ...

  3. BIND的进阶二:视图,日志,转发,子域的授权

    实验分为4部分组成: 1:DNS的转发   2:DNS日志     3:子域的授权 4:智能DNS的简单配置根据网段来分配不同的ip地址 一:DNS的转发: 转发方式有两种:only (直接把客户端请 ...

  4. 收集C#常用类:自己写的一个DBHelper类

    随着学的东西越来越多,一点点的完善吧! using System; using System.Collections.Generic; using System.Linq; using System. ...

  5. 关于absolute 和 relative 定位的定义

    absolute的英文意思是绝对的意思,实际上是针对父级元素元素定位,如果父级元素没有position:relative|absolute,则追至再上一个父级元素,直至相对于文档的左上角定位,按照我们 ...

  6. linux 挂载光盘:mount: you must specify the filesystem type

    尝试挂载光盘镜像时出现mount: you must specify the filesystem type 使用-t auto -t iso9660 或不加参数都搞不定,最后在以下链接找到解决办法: ...

  7. [转]CSS hack大全&详解

    转自:CSS hack大全&详解 1.什么是CSS hack? CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的, ...

  8. 在windows不能正常使用boost og

    现象: 1. 在两个不同的dll中使用static的boost.log.在一个dll中的设置在另一个dll中没有起作用 原因:core::get()返回的是一个单例.在不同的dll中是不同的对象 解决 ...

  9. guava学习--monitor

    转载:https://my.oschina.net/realfighter/blog/349924   https://my.oschina.net/realfighter/blog/349926 M ...

  10. Oracle PL/SQL

    PL/SQL 简介 PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言,是对 SQL 的扩展,它支持多种数据类型,如大对象和集合类型,可使用 ...