以编程方式设置datagridview单元格值,但dataAdapter.Update()不更新数据库

时间:2016-10-18 16:03:11

标签: c# datagridview combobox

我正在以编程方式更新DGV中的某个单元格,当我调用我的UpdateDGV()时,它不会更新到数据库。但是,如果我手动更新该单元格,这是一个组合框并绑定(使用DataTable的数据库),并启动我的更新功能,它工作正常。几乎看起来组合框的特定属性尚未设置为修改或类似的东西。请参阅以下代码:

private void CheckForPendingStatus()
{
    foreach (DataGridViewRow row in datagriview1.Rows)
        {
            if (row.Cells["status_cd"].Value.ToString().Equals(Constants.pending_status))// 'P'
            {
                row.Selected = true;
                row.Cells["status_cd"].Value = "I";
                UpdateDGV();
                break;
            }
        }
}
private void UpdateDgv()
    {
        try
        {
            // Update the database with the user's changes.
            dataAdapter.Update((DataTable)BindingSource1.DataSource);
        }
        catch (System.ArgumentNullException ArgNullExc)
        {
            MessageBox.Show("UpdateDgv - ArgumentNullException: error message: " + ArgNullExc.Message);
        }
        catch (System.InvalidOperationException InvalidOperExc)
        {
            MessageBox.Show("UpdateDgv - InvalidOperationException: error message: " + InvalidOperExc.Message);
        }
        catch (System.SystemException SysExc)
        {
            MessageBox.Show("UpdateDgv - SystemException: error message: " + SysExc.Message);
        }
        catch (Exception ex)
        {
            MessageBox.Show("UpdateDgv - Exception: error message: " + ex.Message);
        }
    }

我尝试使用以下代码查看是否有任何更改:

DataTable changes = ((DataTable)BindingSource1.DataSource).GetChanges();

if (changes != null)
    {
        //Update....
    }

如上所述,当以编程方式进行更改时,当您实际单击组合框并更改值时,“更改”为空但不为空。

我是否还需要在该单元格的组合框中设置值成员和显示成员?将试图找出并看到。

非常感谢任何帮助,谢谢。

0 个答案:

没有答案