datagridview怎么指定选中行

禁用F3 2012-08-17 11:43:43
因为datagridview数据过多,如用户修改数据后,如何指定选定行


dataGridView1.Rows[i].Selected = true;

我用这个方法是选中了,但没有跳转到在窗口上,如窗口只显示50条数据,修改第70条数据时,重新绑定数据后,第70条是选中的,但窗体没有跳转到70条还是停在第一条上,如果直接转到70条上呢?

如果加一行
dataGridView1.CurrentCell = dataGridView1.Rows[rowNumbers].Cells[0];
这个会报错"Current cell cannot be set to an invisible cell."
...全文
969 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
luanzhiye 2014-10-18
  • 打赏
  • 举报
回复
dataGridView1.CurrentCell = dataGridView1.Rows[rowNumbers].Cells[0]; 注意cells[0]这种写法不安全,不好控制首个单元格是哪个。有可能首个单元格是隐藏的。 替代办法是用Cells[string],代码可读性也强一些。
VisualTeam 2012-09-28
  • 打赏
  • 举报
回复
点击时记录行号,然后刷新更改后再定位到行就可以了。第一行可以清掉默认选择行。
wupf2012 2012-09-20
  • 打赏
  • 举报
回复
我也碰到这问题了,发现这么简单的问题,没有一个人回答对的

6楼说的对吗?

确实是被选中了,但第一行也是被选中了,这样就是有两行都被选中了!
禁用F3 2012-08-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

上面少了下面几句代码,其中id,id2不用说什么取出来了吧!
int ScrollValue = 0;
private void datagridview_Scroll(object sender, ScrollEventArgs e)
{
if (e.ScrollOrientation == ScrollOrientation.VerticalS……
[/Quote]
这个事件没用。你这是滚动条事件,我是要修改某一行数据,定位到某一行去...
xxjltan 2012-08-18
  • 打赏
  • 举报
回复
上面少了下面几句代码,其中id,id2不用说什么取出来了吧!
int ScrollValue = 0;
private void datagridview_Scroll(object sender, ScrollEventArgs e)
{
if (e.ScrollOrientation == ScrollOrientation.VerticalScroll)
{
ScrollValue = e.NewValue;
}
}
禁用F3 2012-08-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

if (datagridview.Rows.Count > ScrollValue)
datagridview.FirstDisplayedScrollingRowIndex = ScrollValue;
datagridview.CurrentCell = datagridview.Rows[id].C……
[/Quote]
ScrollValue这是什么?
xxjltan 2012-08-18
  • 打赏
  • 举报
回复
if (datagridview.Rows.Count > ScrollValue)
datagridview.FirstDisplayedScrollingRowIndex = ScrollValue;
datagridview.CurrentCell = datagridview.Rows[id].Cells[id2];
Csharp_琪 2012-08-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

楼主的题目应该改成“datagridview修改数据后自动跳到原来的页数并选中被修改行”。
解决办法:
1、把编辑的该行所在的页数和在datagridview中所在的行的索引放到俩个隐藏的label(label初始文本都设成0)中,点击保存时刷新datagridview,重新绑定数据源的时候获取label中的值,把绑定时的页码替换掉:
编辑按钮中的事件中添加:
lable1.text=d……
[/Quote]
顶,已经解释的很详细了!
福星 2012-08-18
  • 打赏
  • 举报
回复
楼主的题目应该改成“datagridview修改数据后自动跳到原来的页数并选中被修改行”。
解决办法:
1、把编辑的该行所在的页数和在datagridview中所在的行的索引放到俩个隐藏的label(label初始文本都设成0)中,点击保存时刷新datagridview,重新绑定数据源的时候获取label中的值,把绑定时的页码替换掉:
编辑按钮中的事件中添加:
lable1.text=datagridview.selectrowindex;
label2.text="当前页";
2、编辑保存按钮事件重新绑定数据源时肯定有个参数是指定某一页的,用lable1.text替换掉就是显示当前页
数据绑定后,
int index=Convert.ToInt32(label1.Text);
this.dataGridView1.Rows[index].Selected = true;//选中该行
xxjltan 2012-08-18
  • 打赏
  • 举报
回复
滚动条事件,就是定位当前窗口在从新绑定数据源时不变动,你可用可不用。其中这一句
datagridview.CurrentCell = datagridview.Rows[id].Cells[id2];就是定位到你所选择修改的那一行。

[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:

上面少了下面几句代码,其中id,id2不用说什么取出来了吧!
int ScrollValue = 0;
private void datagridview_Scroll(object sender, ScrollEventArgs e)
{
if (e.ScrollOrientation == ScrollOrientation.VerticalS……
……
[/Quote]

110,534

社区成员

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

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

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