最近使用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. linux的帮助信息获取以及man章节的划分

    linux的帮助信息获取以及man章节的划分 linux 帮助 man 章节 linux 获取帮助的途径 (1)help (2)man (3)info command在线获取 (4)程序自带帮助文档 ...

  2. nexus离线安装索引及一些问题

    安装私服~~~ 整体流程: 服务器安装私服 配置私服(主要是安装索引) 本地maven配置指向私服 安装私服 win & linux 网上教程很多,不在阐述: 配置私服(及安装index) 1 ...

  3. poj1753 Flip Game

    题意:4*4的正方形,每个格子有黑白两面,翻转格子使得4*4个格子显示全黑或全白,翻转要求:选中的那个格子,以及其上下左右相邻的格子(如果存在)要同时翻转.输出最小的达到要求的翻转次数或者Imposs ...

  4. 我的mysql测试环境

    版本:5.7 安装方式:yum 修改密码:alter user user() identified by 'root'; 修改配置文件: vi /etc/my.cnf 在my.cnf中添加 skip- ...

  5. PHP返回XML数据

    开发中经常会有用到XML格式数据的时候,那么用PHP怎么来将数组格式的数据用XML格式返回呢? 新建一个类文件,叫ArrayToXml.php <?php /** * 数组转XML类 * 使用方 ...

  6. 浅谈对Js闭包的理解

    理解Js的闭包,首先让我们先看几个概念 执行环境(executive environment)每个函数都有自己的执行环境,匿名函数默认为全局环境. 作用域链(scope chain)子函数继承父函数, ...

  7. jqueryGannt用法

    jqueryGannt主要用于甘特图的展示,直接上步骤 1.下载 jquery.min.js js/jquery.fn.gantt.js 的js ,可以自己去github上搜官方的. 其他的要上传对应 ...

  8. 文顶顶iOS开发博客链接整理及部分项目源代码下载

    文顶顶iOS开发博客链接整理及部分项目源代码下载   网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程 ...

  9. iOS UIWebView 添加tap手势 和 添加button 遇到的问题

    今天应产品需求,在UIWebView 上添加一个 单机手势和双击手势,再加一个UIButton,UIButton 绑定一件事情,结果遇到了点击button 的点击事件的时候,单机手势 的响应事件,被响 ...

  10. 高性能Web服务器Nginx的配置与部署研究系列(1)-- 入门 hello work

    简介: Nginx 是一个基于 BSD-like 协议.开源.高性能.轻量级的HTTP服务器.反向代理服务器以及电子邮件(SMTP.POP3.IMAP)服务器.Nginx 是由一个俄罗斯的名叫“Igo ...