首页 > 解决方案 > 验证每一行后如何从 UltraGrid 和数据库中删除选定的行?

问题描述

如果满足 UltraGrid 和数据库中的条件,则实现以下功能以删除所有选定的行:

    private void RemoveRows()
    {
        foreach (var row in dgvReceords.Selected.Rows)
        {
            var order = row.Cells["Order"].Value;
            if (order== null || string.IsNullOrEmpty(order.ToString().Trim()))
            {
                // Update database via business object and then update grid
                OrderBO.DeleteByPrimaryKey(row.Cells["Id"].Text);
                if (OrderBO.Save() == SaveResult.Success)
                    row.Delete();
            }
        }
    }

它无法遍历所有行并始终留下一行的问题。知道这里有什么问题吗?

标签: c#.netwinformsgridviewinfragistics

解决方案


这是因为正在修改的foreach()uses 集合。.Delete()尝试以for()相反的顺序使用和删除:

private void RemoveRows()
{
    for (var i=dgvReceords.Selected.Rows.Count-1; i >= 0; i--)
    {
        var row = dgvReceords.Selected.Rows[i];
        var order = row.Cells["Order"].Value;
        if (order== null || string.IsNullOrEmpty(order.ToString().Trim()))
        {
            // Update database via business object and then update grid
            OrderBO.DeleteByPrimaryKey(row.Cells["Id"].Text);
            if (OrderBO.Save() == SaveResult.Success)
                dgvReceords.Selected.Rows[i].Delete();
        }
    }
}

推荐阅读