从另一种形式调用保存功能

时间:2013-11-13 13:03:50

标签: c# .net dataset

有谁知道为什么这段代码不起作用?在主窗体上我有保存功能,但每当我点击保存按钮消息“没有要保存的东西”。

    public void spremiIzmjene()
    {
        try
        {
            this.bindingNavigator1.BindingSource.EndEdit();
            DataSet imaPromjene = this.dimproDataSet.GetChanges();
            if (imaPromjene != null)
            {
                int brojRedova = this.op_kontaktTableAdapter.Update(dimproDataSet.op_kontakt);
                MessageBox.Show("Izmjene spremljene: " + brojRedova + " red dodan.", "Uspjeh");
                this.dimproDataSet.AcceptChanges(); 
                this.dimproDataSet.Clear();
                this.op_kontaktTableAdapter.Fill(dimproDataSet.op_kontakt);
            }
            else
            {
                MessageBox.Show("Nothing to save", "No changes");
            }
        }
        catch (Exception ex)
        {
            // msg
            this.dimproDataSet.RejectChanges();
        }

    }

我从插入表单中调用此函数。 问题:我需要打开插入表单,输入数据到字段,关闭表单(但不写入数据库,只保留数据集更改),然后在主窗体上的表单关闭事件调用spremiIzmjene()。但每当我调用该函数dataset.HasChanges返回false

Screenshot

感谢

1 个答案:

答案 0 :(得分:1)

是的,因为一切都没有改变。换句话说,如果您有数据绑定控件,则没有更改任何值。如果您手动更新行,则可能在不应该使用时调用AcceptChanges。简而言之,当修改位于DataTable的{​​{1}}中的数据时,您希望进行这些修改,但不要调用DataSet,因为这会更改AcceptChangesRowState