C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■87106 / )  Re[4]: datagridviewからxmlへの出力について
□投稿者/ kaz (7回)-(2018/04/11(Wed) 23:36:01)
No87104 (WebSurfer さん) に返信
> でも、ポイントはそこではなく、何で作ろうとスキーマと xml 本体がきちんとできていれば、上に書いたコード
> だけでチェックボックスは表示され、チェックの有無で xml の当該項目が true / false に書き換わるというこ
> とです。
>
> 質問者さんが No87102 に書いたような DBNull で判定して false を代入する操作は必要はないです。

「元のxmlがきちんと出来ている」
この条件が大切だと思われます

状況を整理すると
xmlから読み込んだデータをDataGridViewに表示した際
チェックボックスが未チェックになるのは2パターンあって
【1】元のxmlで要素がfalseの時
【2】元のxmlで要素が存在しない(DBNull)の時

【1】であれば、当然書き出したxmlでも正しくfalseが存在する
【2】のときは、書き出したxmlでも要素が欠けた状態になる
というのが今の自分の理解です

WebSurfer さんにご提示頂いたやり方で
元のxmlファイルに欠けた要素がある(例えば、チェックボックスに対応する要素が存在せずDBNullである場合)でも
書き出したxmlファイルでは、その要素はfalseとして存在しますでしょうか?

自分が試した型付データセットを用いる方法だと
元のxmlファイル中で欠けている要素は、それが文字列だろうとチェックボックスに対応する列だろうと
書き出したxml中でも、要素が消えたままになります

つまり、DBNullに相当する要素をxmlに書き出す(または、読み込むタイミングでもいいですが)ときに
「その要素が属している列の型がStrringであれば空文字へ、Booleanであればfalseへ」の変換が必要であり
その変換を誰がどこで行うのかという問題だと思います
(ご提示頂いた方法だと、自動変換されるのかも?)

更に、
そもそも、欠けた要素の存在するxmlを元データとして認めるのかという問題があります
最初に欠けた要素が存在しないxmlデータからスタートして
追記する場合も、要素が欠ける事がないようにすれば(例えば、DefaultValueを適切に設定するとか)
そもそも条件【2】に遭遇する事が無くなりますね

返信 編集キー/


管理者用

- Child Tree -