我的客户端在
Windows应用程序中遇到DataGridView问题.他们正在调用CellValidated事件,但是如果它已经提交回数据源,那么他们想要对该单元进行不同的验证,而不是它是第一次添加的行(并且尚未提交(用户)还没有离开行.)我尝试了IsNewRow属性,但是一旦你开始输入行,就会添加另一个“新行”,所以你正在使用的行不再被认为是新行.I知道该行尚未提交,因为您可以点击Esc取消编辑,整行消失.
有没有办法判断当前编辑的行是否实际上是“新行”,因为它尚未提交回数据源?
解决方法
我在过去实现类似的一种方法是利用绑定到列表的对象的id属性.
例如,如果我有一个BindingList< User>用户是这样的:
public class Names { public string Name { get; set; } public int id { get; set; } }
然后,我可以像这样绑定我的列表:
dataGridView1.AutoGenerateColumns = false; _users = new BindingList<User>(); _users .Add(new Names() { Name = "joe",id=1 }); _users .Add(new Names() { Name = "pete",id = 2 }); bindingSource1.DataSource = _names; DataGridViewTextBoxColumn col1 = new DataGridViewTextBoxColumn(); col1.DataPropertyName = "Name"; dataGridView1.Columns.Add(col1); dataGridView1.DataSource = _users;
然后,当DataGridView提供一个新行时,它的id为0(整数的默认值).
来自数据库的每个对象都具有非零ID.