返回信息流在DataGridView中设置了AllowUserToAddRows=true,期望用户在修改了最下面一行的数据后DGV会自动增加一个新行。
但在使用程序修改数据时,有时数据修改了却并没有自动增加新行。
测试程序是,在DGV中添加四列:ButtonColumn NameColumn ValueColumn(readonly) CommentColumn DummyColumn,在点击ButtonCell时会修改NameColumn和ValueColumn的值。按钮的相应函数如下:(工程见附件)
private void DGV_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
var row = DGV.Rows[e.RowIndex];
DGV.BeginEdit(false);
{
DGV.CurrentCell = row.Cells["NameColumn"];
DGV.CurrentCell.Value = "AAAA";
DGV.RefreshEdit();
if (!DGV.CurrentCell.ReadOnly)
DGV.NotifyCurrentCellDirty(true);
DGV.CurrentCell = row.Cells["ValueColumn"];
DGV.CurrentCell.Value = "BBBB";
DGV.RefreshEdit();
if (!DGV.CurrentCell.ReadOnly)
DGV.NotifyCurrentCellDirty(true);
}
DGV.EndEdit();
DGV.CurrentCell = null;
}
在第一次点击CellButton,第一行Name和Value会被修改并且DGV中自动加上第二行;不要修改第一行中数据,直接点击第二行中的CellButton,第二行的数据更新了,但却没有加入第三行。
同样的代码放在DGV外的button中却能一直按照期望工作,这是为什么?求解答,thx!
附件(19.4KB) DataGridViewTest.zip
这是一条镜像帖。来源:北邮人论坛 / dot-net / #3310同步于 2011/9/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
dotNET机器人发帖
DataGridView数据修改问题
FadeToBlack
2011/9/13镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
【 在 FadeToBlack 的大作中提到: 】
: 在DataGridView中设置了AllowUserToAddRows=true,期望用户在修改了最下面一行的数据后DGV会自动增加一个新行。
: 但在使用程序修改数据时,有时数据修改了却并没有自动增加新行。
: 测试程序是,在DGV中添加四列:ButtonColumn NameColumn ValueColumn(readonly) CommentColumn DummyColumn,在点击ButtonCell时会修改NameColumn和ValueColumn的值。按钮的相应函数如下:(工程见附件)
: ...................
页面生命周期,修改的数据回传到服务器端清除已经生成的新行。
什么意思?能详细点说吗?
【 在 wangjianzhou 的大作中提到: 】
: : 在DataGridView中设置了AllowUserToAddRows=true,期望用户在修改了最下面一行的数据后DGV会自动增加一个新行。
: : 但在使用程序修改数据时,有时数据修改了却并没有自动增加新行。
: : 测试程序是,在DGV中添加四列:ButtonColumn NameColumn ValueColumn(readonly) CommentColumn DummyColumn,在点击ButtonCell时会修改NameColumn和ValueColumn的值。按钮的相应函数如下:(工程见附件)
: ...................
【 在 FadeToBlack 的大作中提到: 】
: 什么意思?能详细点说吗?
: 【 在 wangjianzhou 的大作中提到: 】
: : : 在DataGridView中设置了AllowUserToAddRows=true,期望用户在修改了最下面一行的数据后DGV会自动增加一个新行。
: ...................
不好意思,您是winform,我说的是ASP.NET,您可以打上断点调试下,多点几次,看新的行代码生成了没?
你要是非得这么整,通过人工的方式来实现,按照自己的逻辑来处理,手工添加新行。
但是我有一点不明白,不用第一行的话,就是你所要的效果,你添加第一行的Button列是为了什么?
你说的是第一列的button吧,那个是用来配置一些特定单元格的数据
anyway,通过重写DGV的AllowUserToAddRows的功能实现了需求,但还是不明白DGV这种设计方法究竟是在做什么
【 在 Anti2005 的大作中提到: 】
: 你要是非得这么整,通过人工的方式来实现,按照自己的逻辑来处理,手工添加新行。
: 但是我有一点不明白,不用第一行的话,就是你所要的效果,你添加第一行的Button列是为了什么?
: --
: ...................