コードから新しいデータセットを作成するか、データベースからデータアダプターを介してデータセットを取得すると、行の内容を変更すると、行の状態が変更されます。これがデフォルトの動作であり、すべてが正しく機能します。
DataSet ds = new DataSet(); DataTableテーブル=newDataTable( "Cities"); table.Columns.Add( "CityName"、typeof(string)); table.Columns.Add( "CountryName"、typeof(string)); ds.Tables.Add(table); table.Rows.Add( "New York"、 "USA"); //行0に状態が追加されます table.Rows.Add( "London"、 "UK"); //行1に状態が追加されます table.AcceptChanges(); //状態は両方の行で変更されていません table.Rows [0] [1]="シアトル"; //行0の状態が変更されます
データベースからデータセットを取得し、それをwcfを介して送信し(はい、それは悪い習慣ですが、それは別の話です。標準の動作を使用しています)、プロキシで受信すると、そのデータ行はまだ「状態-」です。気がついて"。データ行は、値の変更に引き続き反応します。
編集:問題をさらにデバッグした後、データセットが正しく逆シリアル化され、wcfクライアントでの変更を反映していることがわかりました(rowstateはセル値の変更に対応します)。各DataTableがFarPointスプレッドシートオブジェクトにバインドされた後(WPFでホストされたWindowsフォームバインド)、機能を反映する変更は失われたようです。
sheet = new SheetView( "Sample"); DataTableテーブル=gettainedDataSet.Tables[0]; //RowStateは正しい sheet.DataSource=テーブル; //今後、RowStateは「破損」します
したがって、データセットのテーブルをFarPoint Spread Sheetオブジェクトにバインドするという点から、行は「状態に依存しません」。それらの内容を変更するか、SetModifiedを明示的に呼び出すことができますが、どちらのアクションもその行状態を変更済みに変更しません。
getDataSet.Tables [0] .Rows [0] [1]="シアトル"; //状態は変更されていません getDataSet.Tabels [0] .SetModified(); //状態は変更されていません
データセットを再び賢くしてその変更を反映し始めるように説得する可能性はありますか、それとも別の方法を検討する必要がありますか?誰かが何が間違っているのか(それ自体またはFarPointコンポーネント、間違ったパターンをバインドする)について何か考えを持っていますか?