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

わんくま同盟

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

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


■87063 / )  Re[1]: datagridviewからxmlへの出力について
□投稿者/ 魔界の仮面弁士 (1633回)-(2018/04/10(Tue) 11:35:40)
C# をお使いなのですし、質問文中でも大文字小文字を
正しく書き分けるようにした方が良いかと思います。
(これが VB の質問なら、大文字小文字の違いにも目を瞑るのですが)


No87059 (kaz さん) に返信
> | りんご |   |
> の場合は(価格が空白)、
> <fruits>
> <name>りんご</name>
> </fruits>
> と<price>の項目が消えてしまいます

price フィールドのデータ型は何ですか?
また、「空白」の場合にはどのような値がセットされていますか?



No87061 (kaz さん) に返信
> xml書き込みは、
> DataSet.WriteXml メソッド (String, XmlWriteMode)で
> xmlwritemodeをWriteSchemaにして行っています

質問文と内容が微妙に異なっているようですね。

現在のコードは、「DataGridView からの XML 出力」ではなく、
「DataSet からの XML 出力」になってしまっているように見えますが、
それで構わないのでしょうか?

たとえば、DataTable の列の中に「DataGridView にバインドしていない列」があった場合や、
DataGridView の列の中に「データバインドしていない列」が含まれていると、
DataSet.WriteXml の結果は、DataGridView とは合致しませんよね。


> dataGridView1.DataSource = mydataset;
> dataGridView1.DataMember = "label";
あれ? 出力される XML は、<fruits> なのに、
DataMember に指定するテーブル名は "label" なのですか??


まず【質問1】の方ですが、
mydataset.Tables["label"] や
mydataset.Tables["fruits"] の列定義などに
特に制限が無いのであれば、たとえば下記のコードで

<fruits>
 <name>りんご</name>
 <price />
</fruits>

な構造を出力されます。


var mydataset = new DataSet("kaz");
var tbl = mydataset.Tables.Add("fruits");
tbl.Columns.Add(new DataColumn("name", typeof(string)) { AllowDBNull = false, ReadOnly = true });
tbl.Columns.Add(new DataColumn("price", typeof(string)) { AllowDBNull = false, ReadOnly = true });
tbl.Rows.Add("リンゴ", "50");
tbl.Rows.Add("りんご", string.Empty);
tbl.AcceptChanges();

dataGridView1.DataSource = mydataset;
dataGridView1.DataMember = "fruits";

var sb = new System.Text.StringBuilder();
using (var output = new System.IO.StringWriter(sb))
{
 mydataset.WriteXml(output, XmlWriteMode.WriteSchema);
}
textBox1.Text = sb.ToString();
返信 編集キー/


管理者用

- Child Tree -