datagridview的屬性欄中的AllowUserToAddRows默認為true時,datagridview面板在你添加的行數下面都會默認多1行,如果你不希望看到它,那麼就把AllowUserToAddRows設置為False,LZ不妨試試看
解决方案 »
- 关于wcf返回二维数组的问题
- vs.2003和vs.2005的区别是什么?
- 在线等 谢谢!希望各位能帮帮忙啊!
- const的用法,有没有类似于c++中对函数参数使用const的方法?
- 怎样获得HTML中某一个<Table>中的code?
- 在C/S下,如何点击改变dataGrid中一行后始终改变那一行的字体或颜色
- public 修饰的方法无法的找到,请帮忙解决一下
- 求教小技巧:在winform程序里(c#)如何打开IE窗口弹出,且IE自动打开显示某xml文件?
- SHELL32无法读取MP3的比特率
- 请问怎样用C#创建一个数据库?
- 什么样的数据结构可以做泛型对象的容器?
- SilverLight 中关于 ASCII码转换问题
mydt.Rows.Add(mydt.NewRow());
楼主代码是在事件中吧,会不会是在添加新行过程中触发了事件,结果又添加了,而这种情况,不只两行了,会无穷多
楼主可以在试试这样
DataTable mydt=new DataTable();
mydt=……
mydt.Rows.Add();累赘
但是,刚开始的时候,也是这么设置的,执行代码后,只增加一行,最末的那行自动往下移动。可现在执行代码第一次,增加两行,算上最末那行,三行了,三行都是空数据。假设datagridview里有1行数据,1行new(AllowUserToAddRows),调试过程,看到。代码执行第一次的时候datatable里有2行,按道理datagridview里算上最末那行,应该是3行,可是datagridview里有了4行,最末行标记isNewRow为true然后,再执行一次,datatable里程了3行,datagridview里程了5行,也就是正确执行了,始终跟datatable同步,每执行一次,加一行,问题就出在第一次执行上面。我把所有的代码都屏蔽了,就剩这个,还是这个问题,百思不得其解啊。刚开始的时候是好的,不知道后来哪里变了下,导致这样的
mydt.Rows.Add(mydt.NewRow());//已经New了一行了,然后又加了一行,是不是两行?
不是这个问题,
mydt.Rows.Add(mydt.NewRow());
---------拆成2行代码是这样---------
DataRow row = mydt.NewRow();
mydt.Rows.Add(row);
如果我点击了datagridview,选中了其中一行则第一次增加2行,第二次以后就开始正常增加1行了
重新做个form试验,没有问题我做的是个自定义控件,里面的代码控件做完的时候好好的,后来不知道加了什么功能,就变成这样了可恨的,现在全部代码都注释了,还找不到原因。更可恨的,调试也看不出问题,调试直接看到datatable就2行,而datagridview的rows.count已经变成了4,应该是3才对的唯一寄希望,谁遇到过这种情况了
---------------------结束语-----------------------------说了这么多,估计大家也是一头雾水,总之,这帖子以后对某个迷茫中的人指点迷津,就是我最大的荣幸了,这个东西今天烦了我一天
一种情况为,在一个普通的按钮事件里面
DataRow dr = dt.NewRow();
dr["EmpId"] = frmSelectCate.drReturn["ID"];
dr["JoinMember"] = frmSelectCate.drReturn["EmpName"];
dt.Rows.Add(dr);
dt.AcceptChanges();
这样做就会出现新增两行的情况,一行有数据,一行为空白行。
另一种情况是在datagridview的双击事件里面
DataRow dr = dt.NewRow();
dr["EmpId"] = frmSelectCate.drReturn["ID"];
dr["JoinMember"] = frmSelectCate.drReturn["EmpName"];
dt.Rows.Add(dr);
dt.AcceptChanges();
当然此时也会出现上述状况。
正对第一个在按钮事件进行新增行的情况,
只需要在前面加上这句话,
#region 这句话
this.dataGridView.CancelEdit();
#endregion
就可以解决新增空白行的问题。
但针对第二种情况,无论是按照楼主的方法,还是按照我的那个方法,都不能解决。
刚又折腾了近一个小时才搞定,中途试过你的方法,不管用。
然后我就代码:
DataTable dt = dgv.DataSource as DataTable;
dt.AcceptChanges();
DataRow dr=dt.NewRow();
dr[""]=..;
dt.Rows.Add(dr);
问题解决。