加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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实现这一点,但我快速查看了那里的属性,没有任何东西跳出来.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读