• 締切済み

C# Windows Formについて

DataGridViewを使い、データの表示を行っております。 内容を保存する為、DataTableとバインドさせて処理を行っているのですが、 DataGridViewのソートを行っても、DataTableに反映されません。 そもそもXML形式で保存すること自体が正しいのかも分からず、困っております。 以上をふまえての質問といたしましては、 (1)データバインドさせたDataGridViewのソート結果の反映について (2)ユーザーが保存ファイルを書き換えできない保存方法について 以上の二つになります。 回答よろしくお願いします。

みんなの回答

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.2

>>(1)ソートキーはあっています。 ソートキーがあっているなら、DataTableをキー順に読み出せば、思うとおりの順番で読めるはずですけどね。 なお、物理的な順序は、データベースとして扱う場合、どうなるか判らないというか、デタラメになるのが普通です。 >>(2)ユーザー編集可能行とプログラムのみ編集可能行が混合しているので、EditModeを使うかと思います。 「ユーザが保存ファイルを書き換えない保存方法」の意味がちょっと違っていたようですね。 保存したファイルをユーザがダイレクトに書き換えできないようにしたいなら、XMLやCSV形式を使うのは間違いです。 SQLServerやOracle、あるいは、MySQLとかAccessなどのデータベースを使います。

  • lv4u
  • ベストアンサー率27% (1862/6715)
回答No.1

(1)DataTableのソートキーとグリッドのソートキーが一致していないなら、グリッドでソートしても反映しないのが正しい動作だと思います。 (2)グリッドを書き換え禁止(ReadOnly)にすればいいのでは?

criminal1006
質問者

補足

(1)ソートキーはあっています。  他のサイトを見たところ、DataTableをコピーし、ソートしたものを元のDataTableに反映させる方法が多いみたいです。  その際、データ量が増えていくにつれて処理速度が重くなると思われ、ましてグリッドが5つあるので実用には向かないと考えております。 (2)ユーザー編集可能行とプログラムのみ編集可能行が混合しているので、EditModeを使うかと思います。  また、XMLやCSV形式でデータを保存しても、ユーザーが編集しやすい文字で出力されるので、あまり好ましくありません。  バイナリなどある程度暗号化された形式で保存したいと考えております。それこそ、出力されたファイルにロックをかけるような堅固な造りにしたいです。

関連するQ&A

専門家に質問してみよう