-1

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

    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

截屏

谢谢

4

1 回答 1

1

是的,因为什么都没有改变。换句话说,如果您有数据绑定控件,则所有值都不会更改。如果您手动更新行,您可能会AcceptChanges在不应该这样做的时候调用。简而言之,当修改DataTable驻留在 a中的 a 中的数据时DataSet,您想要进行这些修改但不要调用AcceptChanges,因为这会更改RowStateUnchanged.

于 2013-11-13T13:12:41.767 回答