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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.87102 の関連記事表示

<< 0 >>
■87102  Re[2]: datagridviewからxmlへの出力について
□投稿者/ kaz -(2018/04/11(Wed) 22:09:05)
    その後、色々試してみて
    まだ部分的に切り出した実験コードレベルですが
    質問で意図した動作はほぼ達成出来たと思われます
    
    ・型付データセットを作成
    ・必要な列を追加
    ・DefaultValueをString列はString.Empty、Boolean列はfalseに設定・・・(※1)
    ・スキーマを含めずWriteXmlで書き出す前に以下のようにDBNullを空文字やfalseに置換・・・(※2)
    
    
                for (int i = 0; i <= ds.Tables[0].Columns.Count - 1; i++)
                {
                    for (int j = 0; j <= ds.Tables[0].Rows.Count - 1; j++)
                    {
                        if (ds.Tables[0].Columns[i].DataType.ToString() == "System.String")
                        {
                            if (ds.Tables[0].Rows[j][i] == DBNull.Value)
                            {
                                ds.Tables[0].Rows[j][i] = String.Empty;
                            }
                        }
    
                        if (ds.Tables[0].Columns[i].DataType.ToString() == "System.Boolean")
                        {
                            if (ds.Tables[0].Rows[j][i] == DBNull.Value)
                            {
                                ds.Tables[0].Rows[j][i] = false;
                            }
                        }
                    }
                }
    
    
    
    この手順で、
    読み込むxmlに抜けた要素がある場合も
    DataGridViewを手書き/コードから編集、あるいは新規行を追加した場合も
    目的の動作になることを確認しました
    
    動作自体はうまくいったのですが
    少々疑問に思う所もありまして
    
    ※1は、コード中で以下のように初期値を設定しているのですが
    ds.Tables[0].Columns["Name"].DefaultValue = String.Empty;
    
    同じことを型付データセットを作るデザイナーのプロパティから
    設定する方法はあるのでしょうか?
    String.Empty,、<String.Empty>など試してみましたが
    空文字にならず、そのままString.Emptyや<String.Empty>という文字列がDataGridViewに表示されてしまいました
    コードから設定すれば済む事ですが、気になったので
    
    ※2は、
    列の型判定についてです
    最初、以下のコードで型判定できると思ったのですが
    if (ds.Tables[0].Columns[i].DataType is System.String)
    
    VisualStudioのエディターで緑波線がついて
    「式は指定された型’string’ではありません」
    とあり、実際に正しく判定されませんでした
    それで、ToString()でキャストした後、文字列として判定する方法に変更した所うまくいきました
    最初のコードがダメな理由がわかりません
    
    
    
    ■No87091 (WebSurfer さん) に返信
    > (1) SQL Server の Microsoft のサンプルデータベースの Northwind の Products テーブルか
    >   ら以下のクエリを使ってインラインスキーマ付きの xml を生成。
    
    すいません、この手順がわからないのですが
    これはVisualStudioで行う操作なのでしょうか?
    SQLは全く触ったことが無いもので・・・
    
記事No.87059 のレス /過去ログ149より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -