datagridview里想加一列序号,该怎么加

andy0618 2009-04-27 07:42:02
如题
...全文
847 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fdc123 2009-04-28
  • 打赏
  • 举报
回复
基本前面都说完了 顶起来!!
-过客- 2009-04-28
  • 打赏
  • 举报
回复
方法一:处理数据源,假设原来绑定的数据源为DataTable dt
DataTable ndt = new DataTable();
DataColumn dc = new DataColumn();
dc.ColumnName = "序号";
dc.AutoIncrement = true;
dc.AutoIncrementSeed = 1;
dc.AutoIncrementStep = 1;
ndt.Columns.Add(dc);
ndt.Merge(dt);
dataGridView1.DataSource = ndt;


方法二:
private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
using (SolidBrush b = new SolidBrush(dataGridView1.RowHeadersDefaultCellStyle.ForeColor))
{
string linenum = e.RowIndex.ToString();
int linen = 0;
linen = Convert.ToInt32(linenum) + 1;
string line = linen.ToString();
e.Graphics.DrawString(line, e.InheritedRowStyle.Font, b, e.RowBounds.Location.X + 20, e.RowBounds.Location.Y + 5);
SolidBrush B = new SolidBrush(Color.Red);
}
}


方法三:
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.ColumnIndex < 0 && e.RowIndex >= 0)
{
e.Paint(e.ClipBounds, DataGridViewPaintParts.All);
Rectangle indexRect = e.CellBounds;
indexRect.Inflate(-2, -2);
TextRenderer.DrawText(e.Graphics,
(e.RowIndex + 1).ToString(),
e.CellStyle.Font,
indexRect,
e.CellStyle.ForeColor,
TextFormatFlags.Right | TextFormatFlags.VerticalCenter);
e.Handled = true;
}
}
andy0618 2009-04-27
  • 打赏
  • 举报
回复
dataGridView1_RowPostPaint
为什么这个事件在不停的执行

private void fileview_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
MessageBox.Show(fileview.Rows.Count.ToString());


}

总是不停的弹出提示框
cseek 2009-04-27
  • 打赏
  • 举报
回复
GridView设计时增加一列(序号)
然后在数据绑定事件里 给这列赋值
wuyq11 2009-04-27
  • 打赏
  • 举报
回复
在datagridview中增加一空列

private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
row.Cells[0].Value = row.Index+1;
}
}

或重绘
参考
兔儿爷 2009-04-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 freeboy827 的回复:]
C# code
private void grid_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
Rectangle rectangle = new Rectangle(e.RowBounds.Location.X,
e.RowBounds.Location.Y,
grid.RowHeadersWidth - 4,
e.RowBounds.Height);

TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(),
grid.RowHeadersDefaultCellStyle.Font,
rectangle,
grid.RowHeadersDefaultCellStyle.ForeColor,
TextFormatFlags.VerticalCenter | TextFormatFlags.Right);

}
[/Quote]

访问我的博客 程序员日记 http://www.ideaext.com
蔡袅 2009-04-27
  • 打赏
  • 举报
回复
如果你是数据帮顶的就好说了
你可以使用DataRow实现
在你所帮顶的DataTable 加一列,这一列的名字假设是xuhao
datagridview 的绑定之前获DataTable多少行
然后循环
for(int i=0;i<datable.rows.count;i++)
{
dataable.rows["xuhao"]=i.tostring();
}
freeboy827 2009-04-27
  • 打赏
  • 举报
回复

private void grid_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
Rectangle rectangle = new Rectangle(e.RowBounds.Location.X,
e.RowBounds.Location.Y,
grid.RowHeadersWidth - 4,
e.RowBounds.Height);

TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(),
grid.RowHeadersDefaultCellStyle.Font,
rectangle,
grid.RowHeadersDefaultCellStyle.ForeColor,
TextFormatFlags.VerticalCenter | TextFormatFlags.Right);

}
sushou2009 2009-04-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yuan105yong 的回复:]
我个人只有三方法种方法:

1.绑上去,缺点 :添加删除很繁琐
2.直接附上去,缺点 : 需要循环附加
3.在Create的方法上帮上去

应该还有第四方法 :自动生成 ,这种方法 我没有试过楼主可以尝试一下
[/Quote]
基本全了~
快40的码农 2009-04-27
  • 打赏
  • 举报
回复
可以在数据源中增加一列.
yuan105yong 2009-04-27
  • 打赏
  • 举报
回复
我个人只有三方法种方法:

1.绑上去,缺点 :添加删除很繁琐
2.直接附上去,缺点 : 需要循环附加
3.在Create的方法上帮上去

应该还有第四方法 :自动生成 ,这种方法 我没有试过楼主可以尝试一下

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧