作者Blog:http://blog.csdn.net/wangj2001/

如果数据量小的话没有问题,一旦数据量大,显示特别慢,还有个缺点就是拖动行高时行号不随行高的变化而变动,出现是几个序号在一个单元格中显示。我自己对他们的算法进行总结,写出一个效果比较不错的带序号的 DataGrid 。原理:只显示表格中显示行的序号,并且拖动行,行号一起移动。

override protected void OnPaint(PaintEventArgs e)

{

base.OnPaint(e);

try

{

if(this.DataSource!=null)

{

int yDelta;

System.Drawing .Rectangle cell=this.GetCellBounds(0,0);

int y=cell.Top +2;

e.Graphics.DrawString("编号", this.Font, new SolidBrush(Color.Black), 8, y-18); //

if(this.VisibleRowCount >0)//只在有记录集时在表格中显示序号

{

CurrencyManager cm;

cm = (CurrencyManager) this.BindingContext[this.DataSource, this.DataMember];

if(cm.Count >0)

{

int nRow=-1;

y=41;           //为第一行默认高度

while(nRow<0)

{

nRow=this.HitTest (8,y).Row ;

y++;

}

int nCount=0;

while(y<this.Height && nCount<this.VisibleRowCount )

{

string text = string.Format("{0}", nRow+nCount+1);

e.Graphics.DrawString(text, this.Font, new SolidBrush(Color.Black), 10, y);

yDelta = this.GetCellBounds( nRow+nCount,0).Height + 1;//****表示一行高度的参数

y += yDelta;

//如果下面有子行显示序号的区分显示

if(this.IsExpanded (nRow+nCount)&& nRow+nCount+1<cm.Count )                                 {

y+=this.GetCellBounds (nRow+nCount+1,0).Height +3;

}

nCount++;

}

}

}

}

}

catch

{}

}

重载了DataGrid中的Paint,这样用起来会特别方便,区区雕虫小技,希望和大家共同分享。

显示DataGrid序号的一个适用的方法相关推荐

  1. asp.net中显示DataGrid控件列序号的几种方法

    在aps.net中多数据绑定的控件很多,论功能来说,应该属DataGrid最为齐全,但它没有提供现成的显示记录序号的功能,不过我们可以通过它所带的一些参数来间接得到序号,下面来看看怎样得到和显示序号值 ...

  2. 在DataGrid中添加一个LookUpColumn,以比较灵活地实现DictValue值代替DictID值显示.

    在一个项目中,我遇到这样一个问题: 数据库字段只存储了一个字典ID1,在DataGrid中显示时,需要用相应的字典Value1来代替字典ID1显示.解决这个问题一般有两个方法: 方法1:  数据库查询 ...

  3. 泰拉瑞亚服务器一直显示什么,《泰拉瑞亚》Steam联机总是掉?教你一个稳定联机方法...

    <泰拉瑞亚>Steam联机总是掉?教你一个稳定联机方法 大家好哈,不知道大家在Steam中与朋友联机进行<泰拉瑞亚>的时候有没有出现不稳定的现象,老是有人掉线.Steam联机确 ...

  4. 给 DataGrid 增加序列号的两种方法

    给 DataGrid 增加序列号的两种方法 ??? 在页面显示一个 DataGrid 的时候,常常需要显示一个序列,如图所示: ??? ??? 同时根据 DataGrid 的过滤条件不同,需要也发生相 ...

  5. wpf之datagrid 序号列

    方法一:在datagrid最前面添加序列号 窗体加载时: <span style="font-family:KaiTi_GB2312;font-size:24px;"> ...

  6. python显示gif图片报错_4种方法(plglet、tkinter、guizero、pygame)的GUI中显示gif

    1 说明: 1.1 环境:python3.8,微软编辑器vscode,深度deepin-linux操作系统. 1.2 代码亲测,注释详细,通俗易懂,适合收藏和转发,慢慢分析,避免入坑. 1.3 锻炼p ...

  7. 一个列用render渲染的时候,如果列宽度不够,内容多出的部分会被隐藏,无法显示。这时需要一个鼠标滑过提示全部内容的tip功能。...

    一个列用render渲染的时候,如果列宽度不够,内容多出的部分会被隐藏,无法显示.这时需要一个鼠标滑过提示全部内容的tip功能. 渲染的函数写成如下: function renderHallName( ...

  8. java查询类提供的方法_查询一个类的方法和构建器的JAVA程序

    查询一个类的方法和构建器的JAVA程序 JAVA语言的类库中的类不计其数,其中设计的方法更是不胜其多,这是任何一个教科书--无论它是多么详尽--所不能穷尽的.如果我们要使用某个类,要查询它的构建器的用 ...

  9. 计算机可移动磁盘无法显示图片,手机插电脑不显示可移动磁盘的详细解决方法...

    有时候因为某些原因,我们需要将手机上的文件转移到电脑上,但是在操作的过程中,却遇到了手机插电脑不显示可移动磁盘的情况,不知道如何处理很是苦恼.所以针对这一问题,今天本文为大家整理的就是关于手机插电脑不 ...

最新文章

  1. 准确率可提升50%以上,Facebook用迁移学习改进代码自动补全
  2. 云服务器适合什么样的用户?
  3. 和为s的连续正数序列java_剑指Offer41:和为S的连续正数序列(Java)
  4. 单元测试之带你搞懂Mockito使用
  5. Elasticsearch DSL
  6. Android学习笔记篇1. 从按钮的点击事件开始
  7. python求和_Python程序查找特殊求和系列的解决方案
  8. CentOS 7 安装 JAVA环境(JDK 1.8)
  9. 循环中的continue功能
  10. Windows Server 2016-Wbadmin命令行备份域控制器
  11. channel is already closed due to channel error;
  12. Google Gears 体验(1):本机数据库
  13. 电路板上的这些标志你都知道是什么含义吗?——详解电子产品认证类型
  14. 小米路由器mini刷Breed,安装固件教程
  15. Apache POI操作PPT: 文字替换 图片替换 表格填充 PPT合并
  16. 12个黑科技网站,每个都是十分良心了 zt – 步行街主干道 – 虎扑社区
  17. Element-ui 日期选择器切换类型(type)
  18. POI导出Excel,并合并单元格
  19. Python+OpenCV视频的读取与处理;截取部分图像数据; 边界填充
  20. (arxiv-2018)图像检索的注意力感知广义平均池化

热门文章

  1. java treemap用法_Java TreeMap put()用法及代码示例
  2. java应用窗口大小_java 如何让程序窗口随屏幕大小改变 | 学步园
  3. 用计算机计算成品率计算公式,计算机专业英语+单词+部分习题.doc
  4. mysql定时任务如何每天0点跑_mysql定时任务,每天的零点执行一个存储过程
  5. 残差平方和ssr的计算公式为_如何为你的回归问题选择最合适的机器学习方法?...
  6. 图像处理_imgproc笔记(1)
  7. 设置flashfxp选中ftp密码的时候显示出来看
  8. 在Ubuntu 12.04 64bit上搭建Crtmpserver视频点播服务
  9. shell --- awk规范 系统总结
  10. Luogu 2470 [SCOI2007]压缩