私の Web ページは、挿入/更新/削除機能を備えた GridView コントロールで構成されています。そのデータは XML ファイルに保存されます。直面している問題は、新しい行を挿入すると、サブ子ノード (新しく挿入された日付) が、xml ファイルにコピーされたときに子ノード (**pos ノード) の外側に表示されることです。
<root>
<pos>
<partNumbers>
<partid>0</partid>
<partnumber>796547</partnumber>
</partNumbers>
<partNumbers>
<partid>3</partid>
<partnumber>567890</partnumber>
</partNumbers>
</pos>
<partNumbers>
<partid>10</partid>
<partnumber>129123</partnumber>
</partNumbers>
</root>
...私が目指しているのは、新しく挿入された行を以下に示すノード:
<root>
<pos>
<partNumbers>
<partid>0</partid>
<partnumber>796547</partnumber>
</partNumbers>
<partNumbers>
<partid>3</partid>
<partnumber>567890</partnumber>
</partNumbers>
<partNumbers>
<partid>10</partid>
<partnumber>129123</partnumber>
</partNumbers>
</pos>
</root>
以下は私の挿入コードです:
protected void gvPartNumber_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "insertXMLData")
{
string partid = ((TextBox)gvPartNumber.FooterRow.FindControl("txtPartIDInsert")).Text;
string partnumber = ((TextBox)gvPartNumber.FooterRow.FindControl("txtPartNumberInsert")).Text;
BindGridView();
DataTable dtXMLInsert = (DataTable)gvPartNumber.DataSource;
DataSet dsgvPartNumber = new DataSet();
dsgvPartNumber.ReadXml(Server.MapPath("~/xml/storeUserInfo.xml"));
DataRow drInsert = dsgvPartNumber.Tables["partNumbers"].NewRow();
drInsert["partid"] = partid;
drInsert["partnumber"] = partnumber;
dsgvPartNumber.Tables["partNumbers"].Rows.Add(drInsert);
dsgvPartNumber.WriteXml(Server.MapPath("~/xml/storeUserInfo.xml"));
BindGridView();
}
}
ここで私が間違っていることについて、何らかの方向性を教えてください。