如何检查是否有任何行添加到Datagridview

本文关键字:任何行 添加 Datagridview 是否 何检查 检查 | 更新日期: 2023-09-27 18:26:29

我在winform上使用Datagridview控件和数据绑定源。数据填充在bindingsource中,并相应地填充datagridview。我正在寻找一个事件或类似的东西,当将bindingsource中的一行添加到datagridview中时,它会启动。

我想对添加的行执行一些操作。我尝试使用RowsAddd事件,但e.RowIndex未正确检索。

第1版:假设我在数据库表中有10条记录。我正在将这些数据获取到bindingsource中,并使用bindingssource作为Datagridview的数据源。现在,在向Datagridview添加行时,我想对Datagridview执行一些UI操作。我使用了RowsAddd事件,但它总是将RowIndex设置为0或1。我还在RowsCount上尝试了foreach循环,如果我调试代码,执行流会符合预期,但在UI上没有得到反映。在所有操作完成后,我调用了Datagridview1.refresh()。

你能帮我拿这个吗?

如何检查是否有任何行添加到Datagridview

当用户使用用于新记录的行添加新行时,此事件的处理程序中的DataGridViewRowsAddedEventArgs.RowIndex值等于用于新记录行的新位置的索引,该索引比刚刚添加的行大一。

但是,当您以编程方式添加行时,RowIndex值是添加的第一行的索引。

private void dataGridView1_NewRowNeeded(object sender,
    DataGridViewRowEventArgs e)
{
    newRowNeeded = true;
}
private void dataGridView1_RowsAdded(object sender,
     DataGridViewRowsAddedEventArgs e)
{
    if (newRowNeeded)
    {
        newRowNeeded = false;
        numberOfRows = numberOfRows + 1;
    }
}

将为您获取确切的行引用msdn rowadded链接

根据绑定后要执行的操作,可以使用Control.BindingContextChanged事件在网格行上迭代:

private void dataGridView1_BindingContextChanged(object sender, EventArgs e) 
{
    foreach (var row in dataGridView1.Rows) {
    }
}

如果它不起作用,你能说绑定后你到底想完成什么吗?