2013-03-13 5 views
0

Ive는 C#을 사용하여 xml 문서를 읽고 각 항목을 listview에 추가하는 asp.net 페이지가 있습니다.DataTable에 xml 문서 저장

다음 사용자가 목록보기에 새 항목을 추가 할 수있는 기능이 있지만 버튼 이벤트에 저장하는 방법을 알 수 없습니다.

문서를로드해야합니다.

protected void Button6_Click(object sender, EventArgs e) 
     { 
      XmlDocument xmlDocument = new XmlDocument(); 
     using (DataTable tabListView1 = new DataTable()) 
     { 
      tabListView1.Columns.Add("value", Type.GetType("System.String")); 
      xmlDocument.Load(AppDomain.CurrentDomain.BaseDirectory + "/XmlFile/ListView1.xml"); 
      XmlNodeList xmlNodeList = xmlDocument.SelectNodes("root/data[@open='1']"); 
      foreach (XmlNode xmlNode in xmlNodeList) 
      { 
       DataRow dr = tabListView1.NewRow(); 
       dr["value"] = xmlNode.InnerText; 
       tabListView1.Rows.Add(dr); 
      } 
      ListView1.DataSource = tabListView1; 
      ListView1.DataBind(); 
     } 
     TextBox3.Text = "Microsoft"; 

    } 

어떻게하면 ListView1.xml에 변경 사항을 다시 저장할 수 있습니까? 감사!

+0

원하는 xml 출력의 예를 게시 할 수 있습니까? 예를 들어 @open 속성의 중요성을 설명하는 것이 유용 할 것입니다. –

+0

Microsoft PowerPoint 2010 Microsoft Powerpoint 2010< 1 "> Microsoft Outlook 2010 stefan

+0

사용자가 새 소프트웨어 항목을 추가 한 다음 해당 목록에 저장하면 이후에 수행 할 작업이 있습니다. 목록에 저장하지 않고 추가 할 수 있습니다. – stefan

답변

0

데이터 원본을 관리하는 컨트롤에서 DataTable로 다시 가져올 수 있다고 가정하면이 방법이 도움이됩니다.

private static void SaveXml(string pathAndFileName, DataTable source)
{
XmlDocument xmlDoc = new XmlDocument();
var root = xmlDoc.CreateElement("root");
xmlDoc.AppendChild(root);

 foreach (DataRow row in source.Rows) 
    { 
     var dataElement = xmlDoc.CreateElement("data"); 
     var openAttribute = xmlDoc.CreateAttribute("open"); 
     openAttribute.Value = "1"; 
     dataElement.Attributes.Append(openAttribute); 
     dataElement.InnerText = row["value"].ToString(); 
     root.AppendChild(dataElement); 
    } 
    xmlDoc.Save(pathAndFileName); 
    }