datagridview中添加行的问题,大家帮帮忙--在线等

zhchsf 2008-12-23 08:26:34
int name = dataGridView1.CurrentRow.Index + 1;
DataRow row = dt.NewRow();

dt.Rows.InsertAt(row, name);

我这样写,为什么添加的行都是在第二行加新行呢?我想做是在DATAGRIDVIEW的选中行的后面加一新行,是不是这个CURRENTROW.INDEX没有获取到当前的行号?如果用别的方法怎么写?
...全文
243 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhchsf 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 hecker728 的回复:]
把name定义form下的字段(变量)

private void dataGridView1_Click(object sender, EventArgs e)事件里写
name = dataGridView1.CurrentRow.Index + 1
/***********

DataRow row = dt.NewRow();

dt.Rows.InsertAt(row, name);
写到button1_click事件
[/Quote]

非常感谢!这样子可以加新行了。不过只能加一行,再添加就添不上了。。。。。。。。。。。。。
hecker728 2008-12-23
  • 打赏
  • 举报
回复
把name定义form下的字段(变量)

private void dataGridView1_Click(object sender, EventArgs e)事件里写
name = dataGridView1.CurrentRow.Index + 1
/***********

DataRow row = dt.NewRow();

dt.Rows.InsertAt(row, name);
写到button1_click事件
zhchsf 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hecker728 的回复:]
显然不行撒,你现在是要用int name = dataGridView1.CurrentRow.Index + 1;
获得当前选择的行。 是对dataGridView1的单击操作。

button1_click里面怎么获得。
[/Quote]
我是编程新手,许多东西还不明白。我在别的函数里用过DATAGRIDVIEW1.SELECTEDROWS.COUNT操作,以为这个会差不多呢。那如果我想在BUTTON点击事件里用那句话该怎么改呢?
hecker728 2008-12-23
  • 打赏
  • 举报
回复
显然不行撒,你现在是要用int name = dataGridView1.CurrentRow.Index + 1;
获得当前选择的行。 是对dataGridView1的单击操作。

button1_click里面怎么获得。
zhchsf 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hecker728 的回复:]
引用 7 楼 zhchsf 的回复:
我那几句应该是能实现那功能吧? 可是断点调试时,CURRENTROW.INDEX的值确实是0,从来不变,怎么回事呢?


怎么感觉你把代码写在别的事件里了吧。
C# codeprivate void dataGridView1_Click(object sender, EventArgs e)
[/Quote]



我是写在button1_click里了?写在这里是不是不行呢?
我刚用SELECTROWS[0]那方法了还不行。。。。。。。。。。。。。。。。。。。。。。。
hecker728 2008-12-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 zhchsf 的回复:]
我那几句应该是能实现那功能吧? 可是断点调试时,CURRENTROW.INDEX的值确实是0,从来不变,怎么回事呢?
[/Quote]

怎么感觉你把代码写在别的事件里了吧。
private void dataGridView1_Click(object sender, EventArgs e)
net5i 2008-12-23
  • 打赏
  • 举报
回复
搂主要明白:DataGridView里面,当前行与选中行不一定一致的!
搂主可能需要这样做:
if(this.dataGridView1.SelectedRows.Count<=0)
return;
int index = this.dataGridView1.SelectedRows[0].Index + 1;
DataRow row = dt.NewRow();
dt.Rows.InsertAt(row, index);

应该可以了
zhchsf 2008-12-23
  • 打赏
  • 举报
回复
我那几句应该是能实现那功能吧? 可是断点调试时,CURRENTROW.INDEX的值确实是0,从来不变,怎么回事呢?
zhchsf 2008-12-23
  • 打赏
  • 举报
回复
当控件被数据绑定时,无法以编程方式向 DataGridView 的行集合中添加行。
用那个新方法不行呀?能否帮忙解决下我那是怎么问题嘛?
hecker728 2008-12-23
  • 打赏
  • 举报
回复
在dataGridView1的单击事件中添加

int name = this.dataGridView2.CurrentRow.Index;
this.dataGridView2.Rows.Insert(name + 1, 1);
zhchsf 2008-12-23
  • 打赏
  • 举报
回复
可是我这运行起来真的只是在第二行添加的,怎么着都是,为什么呢?
net5i 2008-12-23
  • 打赏
  • 举报
回复
搂主没有插入行成功的原因是,你仅仅在DataTable里面新增了行,并没有在DataGridView控件里面新增行
net5i 2008-12-23
  • 打赏
  • 举报
回复
别的方法,可以这样:
int index = 0;
if (this.dataGridView1.CurrentRow != null)
index = this.dataGridView1.CurrentRow.Index + 1;
object[] cellValues = new object[] {第1个单元格的值, 第2个单元格的值, ....};
this.dataGridView1.Rows.Insert(index, cellValues);
net5i 2008-12-23
  • 打赏
  • 举报
回复
肯定能获取到的

110,578

社区成员

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

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

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