データを XML ファイルにレンダリングする送信フォーム (テキスト ボックスとドロップダウン コントロール) で GridView (挿入/編集/削除) を使用しています。GridView を介して XML ファイルを編集/挿入/削除することができ、フォーム コントロール タグは、送信の問題をクリックすると、入力されたデータを XML に正常にコピーします。私の問題は、送信ボタンをクリックすると、Gridview のデータが消去され、フォーム コントロール タグから送信されたデータのみが残ることです。
以下は、フォーム コントロール タグを介して送信されたデータを書き込むために使用しているコード (ボタン イベント ハンドラー) です。
Public Sub Write_XML(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim textWriter As New XmlTextWriter(Server.MapPath("xml/PersonDataVI.xml"), Nothing)
textWriter.Formatting = System.Xml.Formatting.Indented
'Start New Document
textWriter.WriteStartDocument()
'Write a Comment
textWriter.WriteComment("This is a comment")
'Insert Start Element -root element node
textWriter.WriteStartElement("PersonalData")
'write the child element
textWriter.WriteStartElement("products")
'write the child element
textWriter.WriteStartElement("product")
'save the data for the Grid
Dim productID As String = DirectCast(gvProductNumber.FooterRow.FindControl("txtProductIDInsert"),
TextBox).Text
Dim productNumber As String = DirectCast(gvProductNumber.FooterRow.FindControl
("txtProductNumberInsert"), TextBox).Text
BindGridView()
Dim dtXMLInsert As DataTable = DirectCast(gvProductNumber.DataSource, DataTable)
Dim dsgvProductNumber As New DataSet()
dsgvProductNumber.ReadXml(Server.MapPath("~/xml/PersonDataVI.xml"))
Dim drInsert As DataRow = dsgvProductNumber.Tables("product").NewRow()
drInsert("productID") = productID
drInsert("productNumber") = productNumber
Dim drParent As DataRow = dsgvProductNumber.Tables("products").Rows(0)
drInsert.SetParentRow(drParent)
dsgvProductNumber.Tables("product").Rows.Add(drInsert)
dsgvProductNumber.WriteXml(Server.MapPath("~/xml/PersonDataVI.xml"))
BindGridView()
textWriter.WriteEndElement()
textWriter.WriteEndElement()
'write the child element
textWriter.WriteStartElement("customers")
'write the child element
textWriter.WriteStartElement("customer")
'Write LastName Element and Data
textWriter.WriteStartElement("LastName", "")
textWriter.WriteString(txtLastName.Text)
textWriter.WriteEndElement()
'Write FirstName Element and Data
textWriter.WriteStartElement("FirstName", "")
textWriter.WriteString(txtFirstName.Text)
textWriter.WriteEndElement()
'Write Address Element and Data
textWriter.WriteStartElement("Address", "")
textWriter.WriteString(txtAddress.Text)
textWriter.WriteEndElement()
'Write City Element and Data
textWriter.WriteStartElement("City", "")
textWriter.WriteString(txtCity.Text)
textWriter.WriteEndElement()
'Write State Element and Data
textWriter.WriteStartElement("State", "")
textWriter.WriteString(txtState.Text)
textWriter.WriteEndElement()
'Write ZipCode Elment and Data
textWriter.WriteStartElement("ZipCode", "")
textWriter.WriteString(txtZipCode.Text)
textWriter.WriteEndElement()
'End Everything
textWriter.WriteEndDocument()
'Clean up
textWriter.Flush()
textWriter.Close()
'Display the XML Document
Response.Redirect(Server.MapPath("xml/PersonDataVI.xml"))
End Sub
...このコードは、フォーム コントロール タグを介して入力されたデータを xml ファイルにコピーするのに適しています。私の質問は、ボタンがクリックされたときに Gridview からデータを XML ファイル内に保持するにはどうすればよいかということです。以前の投稿でアドバイスされたように (Gridview データを保存するためのコード スニペットにコメントしてください)、新しい dataTable を追加し、それにいくつかの列を追加し、いくつかのデータ行を入力して、ボタン イベント ハンドラーに追加しました。しかし、「xml ファイルは別のアプリケーションで使用されています」というエラーが表示されます。私のxmlファイルは空白に戻りました。上で提供したスニペットを見て、私が間違っていることについていくつかのガイダンスを提供してください。