2012-03-12 52 views
3

是否可以將某種數據集ds保存到XML文件中?winforms排序數據集

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     DataSet ds = new DataSet(); 

     public Form1() 
     { 
      InitializeComponent(); 

      ds.ReadXml("file.xml"); 
      dataGridView1.DataSource = ds.Tables[0]; 


     } 

     private void btnAdd_Click(object sender, EventArgs e) 
     { 
      DataRow dr = ds.Tables[0].NewRow(); 
      dr["FN"] = textBox1.Text; 
      dr["LN"] = textBox2.Text; 
      ds.Tables[0].Rows.Add(dr); 
      ds.Tables[0].DefaultView.Sort = "FN asc"; 

      ds.WriteXml("file.xml"); 
     } 
    } 
} 
+0

請不要在「C#」前添加標題。這就是標籤的用途。 – 2012-03-12 21:47:18

回答

0

DataView class(其通過DefaultView propertyDataTable class曝光)不具有通過其可以被序列化的機構,並且當DataTable實例被保存未保存。

這就是說,你是最好創建一個結構序列化(使用你選擇何種序列化機制),並有其序列與性能沿DataTableDataView例如由DefaultView屬性,相關的暴露你的申請。

然而,隨着mentionedothers,您可以轉換DefaultView財產暴露在DataViewDataTable和保存

+0

不,但您可以將視圖轉換爲表格,然後將其序列化。 – kprobst 2012-03-12 21:51:56

+0

@kprobst更新了答案並鏈接了兩個答案。 – casperOne 2012-03-12 21:53:28

0

Create a new DataTable從您的排序DataView並使用它的WriteXml-Method

ds.Tables[0].DefaultView.Sort = "FN asc"; 
var sortedTable = ds.Tables[0].DefaultView.ToTable(); 
sortedTable.WriteXml("file.xml"); 
0

呼叫DataTable.DefaultView.ToTable()然後用表的WriteXml()方法。我相信排序順序會保持不變。