Chinaunix首页 | 论坛 | 博客
  • 博客访问: 498708
  • 博文数量: 223
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2145
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-01 10:23
个人简介

该坚持的时候坚持,该妥协的时候妥协,该放弃的时候放弃

文章分类

全部博文(223)

文章存档

2017年(56)

2016年(118)

2015年(3)

2014年(46)

我的朋友

分类: C#/.net

2016-09-11 15:03:27

dataGridView是十分有用、方便的数据表格控件。现保存一些有用的语句以方便以后调用,查找。

点击(此处)折叠或打开

  1.             /*初始化dgvFlashTable*/
  2.             DataSet dsFlashTable = new DataSet();
  3.             DataTable dtFlashTable = new DataTable("RW_GD_GW");
  4.             //创建数据行
  5.             DataRow drFlashTable = dtFlashTable.NewRow();
  6.             //创建数据列
  7.             DataColumn DAY_NUM = new DataColumn("DAY_NUM", typeof(int));
  8.             DataColumn DAY_SUM = new DataColumn("DAY_SUM", typeof(int));
  9.             DataColumn BL_DAY_NUM = new DataColumn("BL_DAY_NUM", typeof(int));
  10.             DataColumn GW_NAME = new DataColumn("GW_NAME", typeof(string));
  11.             //将列添加到表中
  12.             dtFlashTable.Columns.Add(DAY_NUM);
  13.             dtFlashTable.Columns.Add(BL_DAY_NUM);
  14.             dtFlashTable.Columns.Add(DAY_SUM);
  15.             dtFlashTable.Columns.Add(GW_NAME);
  16.             //将行中的数据添加进去,随便写的
  17.             drFlashTable["DAY_NUM"] = 1111; //日完成量
  18.             drFlashTable["BL_DAY_NUM"] = 11; //日不良量
  19.             drFlashTable["GW_NAME"] = "GW_NAME";
  20.             //将行加入到DataTable中
  21.             dtFlashTable.Rows.Add(drFlashTable);
  22.             //将DataTable加到DataSet中
  23.             dsFlashTable.Tables.Add(dtFlashTable);
  24.             //将DataSet作为dataGridView的数据源
  25.             dgvFlashTable.DataSource = dsFlashTable.Tables[0].DefaultView;
  26.             //设置第一行标题的名字
  27.             dgvFlashTable.Columns[0].HeaderText = "地址";
  28.             dgvFlashTable.Columns[1].HeaderText = "十进制";
  29.             dgvFlashTable.Columns[2].HeaderText = "描述";
  30.             //隐藏第一列
  31.             dgvFlashTable.RowHeadersVisible = false;

显示第一列行号的办法:

点击(此处)折叠或打开

  1. //设置行号
  2.         private void dgvFlashTable_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
  3.         {
  4.             var grid = sender as DataGridView;
  5.             var rowIdx = (e.RowIndex + 1).ToString();

  6.             var centerFormat = new StringFormat()
  7.             {
  8.                 // right alignment might actually make more sense for numbers
  9.                 Alignment = StringAlignment.Center,
  10.                 LineAlignment = StringAlignment.Center
  11.             };

  12.             var headerBounds = new Rectangle(e.RowBounds.Left, e.RowBounds.Top, grid.RowHeadersWidth, e.RowBounds.Height);
  13.             e.Graphics.DrawString(rowIdx, this.Font, SystemBrushes.ControlText, headerBounds, centerFormat);
  14.         }
但是这种方法在大数据量的时候性能比较差,每次滚动数据都会触发RowPostPaint事件。


参考资料:
http://blog.chinaunix.net/uid-25498312-id-3798727.html
http://blog.csdn.net/xieyufei/article/details/9769631显示行号


阅读(751) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~