2016-07-25 24 views
0

解決策が見つからない場合は少し問題があります。DataTableのRejectChanges()はDataGridView内のすべての行を削除します

私はカスタムのdataGridViewを持つフォームを持っています。 このdatagridViewはデータソースを取り込みます。 DataSourceは自分で作成したDatatableです(後でDatabase DataTableに置き換えられます)。 これまでのところすべてが表示されています。

私のフォームには2つのボタンがあります。保存するには 、Cancellには1つ 私がやりたいことは、キャンセルをクリックすると、私のdatagridViewの変更を元のdataTableに戻したいのです。

ボタンをクリックすると、すべての行が削除されます(列はそのまま残ります)。ここ

は、私は私のコードで何をすべきかのexempleです:

public partial class UserControlMyDataGrid : UserControl 
{ 
    private DataTable originalDataTable; 

    public UserControlRechercheDataGrid() 
    { 
     InitializeComponent(); 

     originalDataTable = new DataTable(); 
     originalDataTable.Columns.Add("col A", typeof(int)); 
     originalDataTable.Columns.Add("col B"); 
     originalDataTable.Columns.Add("col C", typeof(bool)); 
     originalDataTable.Columns.Add("col D"); 

     for (int j = 0; j < 5; j++) 
     { 
      originalDataTable.Rows.Add(j, "c" + j.ToString(), true, "test"); 
     } 

     dataGridView1.DataSource = originalDataTable; 
    } 

private void buttonCancelModifications_Click(object sender, EventArgs e) 
    { 
     originalDataTable.RejectChanges(); 
     dataGridView1.Refresh(); 
    } 

} 

誰もが、それはこのように動作理由を任意のアイデアがありますか?

答えて

0

RowStateのすべてがAddedであるためです。最初にデータテーブルを作成してUnmodifiedにした後にAcceptChangesに電話する必要があります。

参照:https://msdn.microsoft.com/en-us/library/system.data.datarow.rowstate(v=vs.110).aspx

+0

ありがとうございます。私はMSDNのドキュメントを読んで、rowstateをチェックしましたが、dattable.RejectChanges()については、追加された状態ではなく、変更された状態と削除された状態についてしか話しませんでした。いずれにしても 。再度、感謝します。これは全体的に多くを明らかにした。 少し質問があります。私はそれを保存したい場合、私は同じことをしなければならない。変更を受け入れてからデータテーブルをエクスポートしてください。 – lolplayer101

関連する問題