Winform DataGridView 求行号

cm200 2009-02-24 09:36:20
我知道了datagridview中某个Cell的值 现在相求它的行号,应该怎么写呢 谢谢
...全文
178 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
cm200 2009-02-24
  • 打赏
  • 举报
回复
我绑定数据 没有设置主键的,行号已经绘出来了
wangping_li 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 hbxtlhx 的回复:]
在CellPainting事件中通过e.Graphics绘制e.RowIndex可以显示行号。
[/Quote]
在CellPainting事件里面写以下代码就能绘制行号

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

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

}
DMU_WD 2009-02-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cm200 的回复:]
就是唯一的,现在想取它的行号。或者说我已经知道了这一行的记录,现在想求行号
[/Quote]
既然知道某一行的记录了,查询主键不就ok了?
cm200 2009-02-24
  • 打赏
  • 举报
回复
是的 显示了行号我就能获得了 谢谢、
北京的雾霾天 2009-02-24
  • 打赏
  • 举报
回复
在CellPainting事件中通过e.Graphics绘制e.RowIndex可以显示行号。
thfthf2 2009-02-24
  • 打赏
  • 举报
回复
你显示的数据中是否有唯一列,如果有的话就好解决了,将唯一列信息作为键名,行号作为键值,将信息放在Dictionary中保存起来,然后查找时就能很快了,适合数据量较大,查找次数较多的情况,查找的时间复杂度是常数级别
cm200 2009-02-24
  • 打赏
  • 举报
回复
Cherishny 的方法好像可行啊 因为我本来就要重绘,现在多加几行代码就行了。因为现在不能用分页 看来只能这样了
Cherishny 2009-02-24
  • 打赏
  • 举报
回复
很慢,你要显示多少记录啊
多了就分页啊
Cherishny 2009-02-24
  • 打赏
  • 举报
回复
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.Value == "text")
MessageBox.Show(e.RowIndex.ToString());
}
cm200 2009-02-24
  • 打赏
  • 举报
回复
是的 2005 现在我的目的就是要让这条记录选中并显示在第一条,目前被卡在了不能选中它,因为不能知道行号。遍历有慢了点
feifeiyiwen 2009-02-24
  • 打赏
  • 举报
回复
数据不多就循环吧
hamehameha 2009-02-24
  • 打赏
  • 举报
回复
要不然你只有先想办法让它被选中了
hamehameha 2009-02-24
  • 打赏
  • 举报
回复
好像只能循环吧,你用的是2005吧,可能2008里的linq可以不用全部遍历能做到
cm200 2009-02-24
  • 打赏
  • 举报
回复
如果记录行数太多了 这样做不是很慢吗?
linlin1972 2009-02-24
  • 打赏
  • 举报
回复
int rowIndex = -1;

for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
if (dataGridView1.Rows[i].Cells[n].Value == v)
{
rowIndex = i;
break;
}
}

return rowIndex;

:-)
cm200 2009-02-24
  • 打赏
  • 举报
回复
就是说我知道这条记录的所有值 也需要循环遍历吗??没有其他方法吗?
浪子-无悔 2009-02-24
  • 打赏
  • 举报
回复
路过学习了。。。。
upcwangbo 2009-02-24
  • 打赏
  • 举报
回复
Cell 植不一样,你怎么能一一对应呢?
如果不一样的话,你可以对DataGridView 的Cell的值进行遍历,然后取得其行号!
完毕!
feiyun0112 2009-02-24
  • 打赏
  • 举报
回复
循环判断

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

http://feiyun0112.cnblogs.com/
cm200 2009-02-24
  • 打赏
  • 举报
回复
那一行我没有选中,只是我知道在这个DataGridView中有这行记录,现在想求行号
加载更多回复(4)

110,535

社区成员

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

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

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