显示DataGrid序号的一个适用的方法
来源:互联网 发布:js数组转化成字符串 编辑:程序博客网 时间:2024/04/28 13:11
我在网上查了好几个例子,如果数据量小的话没有问题,一旦数据量大,显示特别慢,还有个缺点就是拖动行高时行号不随行高的变化而变动,出现是几个序号在一个单元格中显示。我自己对他们的算法进行总结,写出一个效果比较不错的带序号的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
{}
}
{
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序号的一个适用的方法
- 显示DataGrid序号的一个适用的方法
- 显示DataGrid序号的一个适用的方法
- 显示DataGrid序号的一个适用的方法
- 显示DataGrid序号的一个适用的方法
- asp.net的DataGrid中在每行依次显示序号的方法
- asp.net中显示DataGrid控件列序号的几种方法
- asp.net中显示DataGrid控件列序号的几种方法
- 页面中用page显示序号的方法
- 对DataGrid/DataList/Repeater添加序号的三种方法
- DataGrid/DataList/Repeater前添加序号的方法
- dataGrid显示另外一个dataGrid的数据(dataGrid移植)
- JQuery easyUI中datagrid查找数据后列别不显示前面的序号而是显示NAN
- Flex实现DataGrid的序号列
- DataGrid的序号列(自增长)
- 实现DataGrid序号列的添加
- Flex实现DataGrid的序号列
- 显示每一行的序号
- VHDL语言实现的任意整数分频器。
- Asp.net2.0 下写的MsgBox函数
- 一个不错读取Configuration文件的类,方便设置配置文件
- J2EE中几种业务代理模式的实现和比较
- Oracle安装(linux)总结
- 显示DataGrid序号的一个适用的方法
- spinlock
- 浅论韬光养诲与和平崛起[转贴]
- 使用层弹出对话框
- 回归基本面,构建增长组合
- 农业股:激进者仍可介入
- 【松鼠搞拖拽】[转帖]IE和FireFox中层的拖动详解
- c#中设置快捷键
- C++ Style Guide