-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存在する のデータを変更する場合DataSet、これらの変更を行いたいのですが、 を に変更するため、呼び出さないでAcceptChangesください。RowStateUnchanged

于 2013-11-13T13:12:41.767 に答える