2012-05-13 27 views
0

DataGridViewにデータをバインドする際に問題があります。DataGridView/DataTable | rowStateが変更されない

DataGridViewを継承するMyDataGridViewクラスがあります。私のデータグリッドビューのデータソースは、DataTableをデータソースとして保持するBindingSourceオブジェクトです。

問題は、私が(私の)DataGridViewオブジェクトを使って変更を加えたときに、rowStateが変更されずに「変更されていない」状態にとどまることです。 DataTableの値が変更されたにもかかわらず(つまり、私の更新が動作しなくなるのは、rowStateが未定義とみなされるためです)。 DataTableに直接変更すると正常に動作することに注意してください。

+0

"(私の)DataGridViewオブジェクトを使って変更すると" - プログラムでこれらの変更を行っていますか? – animaonline

+0

いいえ、コントロールを介して。プログラムでmyDataTable.rows [0] [0] = "new string"のような変更を加えると、rowStateが変更されます。私はこの問題が拘束力と関係していると思う。 – gavra

答えて

0

あなたは私たちにMyDataGrdViewクラスのコードをしてください示しことができると私は、私はすでに解決策を知っていると思う:?

は(ありがとう 制御を更新する際に知っているので、あなたは、データ・ソースを再バインドする必要があります

データソースを変更したコールDataGridView.DataBind(); evrytime。 それはあなたもあなたのDataTableでこれを行う必要があり、わずかに可能です。

+0

それは別のコンピュータ上にあるのでそれほど簡単ではありませんが、ここで重要な部分の一部はhttp://codepaste.net/t5y9yyです。あなたのソリューションを取得しないでください - 再バインドを!私はdatagridview/datatableでそのDataBindを見つけることができませんでした。ありがとう(: – gavra

+1

)そのようなメソッドはありませんatGridView.DataBind(); ..... –

1

さて、Googleを少し使用した後、DataTable.Rows [index] .EndEdit()を呼び出すと問題が解決されることがわかりました。それがどうすればいいのか分かりませんが、問題を解決しました。 (そのメソッドを呼び出すために私はDataGridView.CellEndEditイベントを使用します)。

3

グリッドを含むフォームのValidateメソッドを呼び出す必要があります。このメソッドは、グリッド内の別の行にフォーカスを移動した場合と同様に、グリッドに影響します。

+0

動作しません.... –

関連する問題