C#DataGridView添加一行 – 验证时,如何知道该行是新的还是尚未
发布时间:2020-12-15 08:00:16 所属栏目:百科 来源:网络整理
导读:我的客户端在 Windows应用程序中遇到DataGridView问题.他们正在调用CellValidated事件,但是如果它已经提交回数据源,那么他们想要对该单元进行不同的验证,而不是它是第一次添加的行(并且尚未提交(用户)还没有离开行.)我尝试了IsNewRow属性,但是一旦你开始输入
我的客户端在
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. 也许有一种方法可以使用BindingSources实现这一点,但我快速查看了那里的属性,没有任何东西跳出来. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |