MySQL InnoDBデータベース内のタイプフィールドにいくつかの画像が保存されており、Blob
それらの画像に関連する他の情報も別のフィールドに保存されています。
ご存知のように、DevExpressバージョン11.2で配布されているBanded Grid Viewは、 Banded Grid Columnsの助けを借りて、いくつかのタイプのデータ、特に画像をレンダリングすることができます。
これまでのところ、すべてのコントロールを作成し、画像を含む必要なあらゆる種類のデータを、を所有するGridControlプロパティを介してcommonandapproachMySqlDataReader
を使用してロードすることができます。DataSet
DataSource
BandedGridView
ただし、ご存知のように、MySQLからBlobフィールドをロードすると、ファイルの内容(この場合は問題の画像)を含むバイト配列が返されます。
DevExpressがバイナリデータを認識し、それが画像ファイルであることを認識し、データベースImage
フィールドを処理するために割り当てられた列の下のすべての行に画像を自動的にレンダリングすることを期待していましたが、そうではなく、今ではそれがおそらくはるかに希望を持っていた。
画像をレンダリングする代わりに、列の各行には、フィールドに含まれるオブジェクトのタイプを参照する単純な文字列出力が表示されます。この場合、ファイルのバイナリ表現であるため、を出力しますSystem.Byte[]
。
DevExpressのドキュメントを検索しましたが、一般的にWebで、問題を解決できる明確なものは見つかりませんでした。WinForms->XtraGridセクションの下に「GridMainDemo」という名前のソリューションであるDevExpressと一緒にパックされた私の望ましい結果の例があります。デモを実行したら、代替ビューとバンドグリッドビューに変更し、画像列の下の任意の行をクリックするだけで、希望する結果の明確な例が表示されます。
もちろん、そのデモのソースを調べましたが、明確化と説明がそのようなデモを作成したDevExpressチームの明確な目的であったとは言えません。残念ながら、私はそれを深く調べる時間があまりありませんでした。ただし、このデモは、画像がファイルとしてローカルに保存され、ある種のリポジトリですでに適切に参照されているという点とは異なります。これは、私の問題にはあまり役立ちません。
私の質問を終えるために、長い間読んで申し訳ありませんが、私の目的が何であるか、何が邪魔をしているのか、そして私の目的を達成する方法を見つけるためにすべてのものがどのように設定されているのかを明確に伝えたいと思いました。
さて、長い話を短くします。MySQL Blobフィールドからバンドグリッドビューの列に画像をロードし、ロード後またはユーザーがフィールドセルをクリックしたときにレンダリングする方法の簡単な例が理想的であり、それを使用して理解でき、ビューが画像もレンダリングするように、必要なコードを実行します。
本当にありがとうございました。
注:残念ながら、ローカルまたはリモートに保存されたファイルを使用することはできません。画像はデータベースの範囲内に保持する必要があります。