2016-05-19 12 views
0

に私はコードのDataTable Rowstateは常に追加された状態

DataTable DTable = new DataTable(); 
DTable.Columns.Add("Domain"); 
DTable.Rows.Add("Sample"); 
DTable.AcceptChanges(); 
DGridView.DataSource = DomainTable; 

そして、私の問題は、私は最初の行を変更していてもということRowstateある変化

private void SaveDChangesButton_Click(object sender, EventArgs e) 
     { 
      foreach(DataRow dr in Dtable.Rows) 
      { 
       if(dr.RowState == DataRowState.Modified) 
       { 

       } 
      } 
     } 

を保存するためには、このボタンのこれらのラインを持っています常にを返してください。が追加されました。

+0

@TanmayNeheteいい記事ですが、私の質問には答えません。 – Believer

+0

DataGridViewをどのように変更(編集)しましたか?上記のコードをさらに表示できますか?基本的に、DataGridViewの値を編集しても、DataGridView内のDataTableと同じ変更は行われません。 –

+0

実行時にVSで実行しているときに変更します – Believer

答えて

0

RowStateはフラグの列挙型で、複数の値をオンにすることができます。

値をテストするには、常にHasFlag関数を使用してください。だから、これを変更:このため

if(dr.RowState == DataRowState.Modified) 
    { 
     // do the saving stuff 
    } 

if(dr.RowState.HasFlag(DataRowState.Modified)) 
    { 
     // do the saving stuff 
    } 

AcceptChangesが呼び出されていてはいけない上AddedModified用の両方がすることに注意してください..:

追加します:行がDataRowCollectionに追加され、 AcceptChangesが呼び出されていない

変更されました:行が変更され、AcceptChangesに が呼び出されていません。

あなたが行を追加し、ユーザーがそれを修正する(またはコードでそれを行う)させた場合、インクルードが持っているという事実にもかかわらず、両方フラグが上であるべきで、あなたのコード内の元の状態は、です実際に修正されました!あなたのコードは、その後示唆していないどちらもフラグがオンになっているとして、あなたがは、行またはテーブル全体のためにAcceptChangesと呼ばれてい場合

しかし

関連する問題