gpt4 book ai didi

c# - 如何在C#中获取datagridview的单元格状态

转载 作者:行者123 更新时间:2023-11-30 13:04:25 25 4
gpt4 key购买 nike

我有一个 datagridview,dgv1,有 10 列,采用 C# 形式,它与数据库表绑定(bind)。第二列是一个带有值的组合框,关闭/打开/考虑....用户可以修改任何单元格中的值。修改完成后,用户可以按保存按钮将更改保存到数据库表中。但是在保存更改之前还需要完成另一项任务:如果任何第二列的值发生更改,则必须调用数据库存储过程。

我的问题是我不知道如何确定单元格的值是否发生了变化,而且我还需要知道以前的值,以前的值和当前值必须传递给存储过程。

foreach (DataRow rows in dtList.Rows)
{
if(rows.RowState.ToString() == "Modified")
{
if(rows.cell(1) is changed)
{
call stored procedure here...
}
}
i++;
}

最佳答案

一个简单的(但可能不是最好的方法!)是使用 List 来存储 ComboBox 值。在表单加载时,我们可以这样写:

const int yourCell = 1;
List<string> colComboValues = new List<string>();
foreach (DataGridViewRow dgvRow in this.dataGridView.Rows)
{
DataGridViewComboBoxCell CB = dgvRow.Cells[yourCell] as DataGridViewComboBoxCell;
colComboValues.Add(CB.Value.ToString());
}

然后在保存时我们可以使用以下命令检查哪些 ComboBox 已更改:

// On Save.
int nIdx = 0;
foreach (DataGridViewRow dgvRow in this.dataGridView.Rows)
{
DataGridViewComboBoxCell CB = dgvRow.Cells[yourCell] as DataGridViewComboBoxCell;
if (String.Compare(CB.Value.ToString(), colComboValues[nIdx++], false) != 0)
{
// Value has changed!
}
else
{
// Value has not.
}
}

希望这对您有所帮助。

关于c# - 如何在C#中获取datagridview的单元格状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9230824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com