2016-03-04 65 views
0

所以,这是我的问题。我正在创建我的第一个C#应用程序之一。这将是一种库存管理器。有一个dataGridView,使用行和列显示数据。您可以在dataGridView中添加,删除和更新任何行。您还可以将dataGridView中的内容保存为XML文件。我的问题是,我不知道如何将该XML文件加载回dataGridView以供将来编辑网格?将XML文件内容添加到C#中的dataGridView?

dataGridView的行中的数据使用DataTable添加。

这里是我的意思的例子:

dataTable.Rows.Add(txtID.Text, txtName.Text); 
dataGridView1.DataSource = dataTable; 

我只需要获取数据从XML行,因为列的名称被添加的形式加载时。

下面介绍一下XML格式如下:

<NewDataSet> 
    <Table1> 
    <ID>AN ID</ID> 
    <Name>A NAME</Name> 
    </Table1> 
    <Table1> 
    <ID>ANOTHER ID</ID> 
    <Name>ANOTHER NAME</Name> 
    </Table1> 
    <Table1> 
    <ID>YET ANOTHER ID AND SO ON</ID> 
    <Name>YET ANOTHER NAME AND SO ON</Name> 
    </Table1> 
</NewDataSet> 

而且我不知道这事,但XML文件的名称是Contents.xml,它位于应用程序的启动位置。

我不确定我是否有任何意义?

谢谢! :)

回答

0

ü可以通过序列化像

NewDataSet obj = null; 
     string DeviceResponse = ""; 
     DeviceResponse = "<NewDataSet>" + 
       " <Table1>" + 
       "  <ID>AN ID</ID> " + 
       "  <Name>A NAME</Name> " + 
       " </Table1> " + 
       " <Table1> " + 
       "  <ID>ANOTHER ID</ID> " + 
       "  <Name>ANOTHER NAME</Name> " + 
       " </Table1> " + 
       " <Table1>" + 
       "  <ID>YET ANOTHER ID AND SO ON</ID> " + 
       "  <Name>YET ANOTHER NAME AND SO ON</Name>" + 
       " </Table1> " + 
       " </NewDataSet> "; 
     try 
     { 
      XmlSerializer serializer = new XmlSerializer(typeof(NewDataSet)); 
      using (TextReader reader = new StringReader(DeviceResponse)) 
      { 
       obj = (NewDataSet)serializer.Deserialize(reader); 
      } 
     } 
     catch (Exception ex) 
     { 

     } 
     //if Successful 

     string id = obj.Table1[0].ID; 

和你NewDataSet类做,这是

[XmlRoot(ElementName = "NewDataSet", Namespace = "")] 
public class NewDataSet 
{ 
    [XmlElement("Table1")] 
    public List<Table1> Table1{get; set;} 
} 


public class Table1 
{ 
    public string ID {get; set;} 
    public string Name {get; set;} 

} 

不要忘记添加命名空间

using System.IO; 
using System.Xml.Serialization; 
0

您可以使用此方式:

private void button1_Click(object sender, EventArgs e) 
    { 
     DataTable dt = new DataTable(); 

     string xml = @"<NewDataSet> 
         <Table1> 
         <ID>AN ID</ID> 
         <Name>A NAME</Name> 
         </Table1> 
         <Table1> 
         <ID>ANOTHER ID</ID> 
         <Name>ANOTHER NAME</Name> 
         </Table1> 
         <Table1> 
         <ID>YET ANOTHER ID AND SO ON</ID> 
         <Name>YET ANOTHER NAME AND SO ON</Name> 
         <Bonus>Bonus Column</Bonus> 
         </Table1> 
        </NewDataSet>"; 

     using (DataSet ds = new DataSet()) 
     { 
      using (MemoryStream mStrm = new MemoryStream(Encoding.UTF8.GetBytes(xml))) 
      { 
       ds.ReadXml(mStrm); 
       dataGridView1.DataSource = ds.Tables[0]; 
      } 
     } 
    } 
相关问题