데이터를 XML 파일로 렌더링하는 제출 양식 (텍스트 상자 & 드롭 다운 컨트롤)에 GridView (삽입/편집/삭제)를 사용하고 있습니다. GridView를 통해 XML 파일을 편집/삽입/삭제할 수 있으며 양식 컨트롤 태그도 제출 문제를 클릭하면 XML로 입력 된 데이터를 성공적으로 복사합니다. 내 문제는 제출 단추를 클릭하면 Gridview의 데이터가 지워져 양식 제어 태그에서 제출 된 데이터 만 남습니다. 를 통해 입력되는 데이터를 복사 잘Gridview ID를 XML WriteString 메서드에 전달하는 방법
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 파일에 추가하십시오. 내 질문은, 어떻게 DataView를 클릭하면 XML 파일 내에서 머물 Gridview에서 얻을 수 있습니다. 이전 게시물 (데이터 코드 저장에 대한 내 코드 스 니펫의 의견을 말하십시오)에서 새 dataTable을 추가하고 일부 열을 추가 한 다음 일부 데이터 행으로 채우고 단추 이벤트 핸들러에 추가했습니다. 그러나 이제는 "xml 파일이 다른 응용 프로그램에서 사용 중입니다."라는 오류가 나타납니다. 이제 내 xml 파일이 비어있게됩니다. 위에서 제공 한 스 니펫을 살펴보고 내가 잘못하고있는 것에 대해 몇 가지 지침을 제시해 주시겠습니까?
내가 실제로 XML 파일이 새로운 데이터로 (버튼 클릭을 통해 제출) 양식/사용할 때마다 채우려. 제출 버튼을 클릭하면 XML 파일은 현재 텍스트 상자 컨트롤을 통해서만 입력 된 데이터로 채워집니다. 그리드 데이터를 유지하는 방법을 알아 내려고 노력 중입니다. 다시 말해 제출 버튼을 클릭하면 XML 데이터에 그리드 데이터를 다시 쓰십시오. 다른 제안? – user1724708
... 계속 ... 제출 버튼을 클릭 할 때마다 텍스트 상자 컨트롤에서 제출 된 데이터와 함께 gridview의 데이터를 xml 파일에 다시 쓰고 싶습니다. 지금까지, gridview에서 데이터는 텍스트 상자 컨트롤에서 제출 된 데이터로 덮어 씁니다. – user1724708
제 이해는 루트, 제품 및 고객에 두 개의 하위 노드가 있음을 의미합니다. Products 노드는 GridView에 연결됩니다. 이제 새 제품을 텍스트 상자에 추가하고이 데이터로 표를 업데이트하려고합니다. 고객도 추가하고 있지만 gridview에 바인딩하지는 마십시오. 나 맞아? – afzalulh