2012-03-12 35 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()方法。我相信排序顺序会保持不变。