0

コードから新しいデータセットを作成するか、データベースからデータアダプターを介してデータセットを取得すると、行の内容を変更すると、行の状態が変更されます。これがデフォルトの動作であり、すべてが正しく機能します。

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コンポーネント、間違ったパターンをバインドする)について何か考えを持っていますか?

4

3 に答える 3

1

DataAdapter.Update()を呼び出す前に、DataTableまたはDataRowオブジェクトでEndEdit()メソッドを試してください

于 2011-03-08T12:10:25.203 に答える
0

問題はFarPointSpreadコントロールにあったようです。バージョン5.0は機能を壊し、GrapeCityのスタッフはバージョン5.0.3518でバグを修正しました。これは現在正常に動作しています。

于 2011-03-09T13:52:51.820 に答える
0

ある形式で同様の状況に遭遇しましたが、ラベルのToolTipプロパティへのバインドに問題があることに気付きました。最初に、 nullの値をnullからある文字列に変更すると問題は解消されましたが、プロジェクトに他の変更を加えた後、問題が再び発生したことに気付きました。ToolTipプロパティへのバインドを削除すると、問題は再び解消されました。それでも私は永遠かどうかわかりません。

于 2013-10-24T13:34:22.710 に答える