出處:http://www.dotblogs.com.tw/kyleshen/archive/2013/10/22/125028.aspx
有時我們會有多個結構一樣但來源不同的資料,需要顯示在一個Grid裡面,這時我們就能用DataTable的Merge() 函數來實現,以我實務遇到的情況,大概就是一個DataTable資料來源為某個XML檔,而另外一個來源為DB(當然如果都是存在於DB,就可以直接用Join的方式來實現),以下就示範這兩種資料來源怎麼合併:
XML來源:
04 | /// <returns></returns> |
05 | private DataTable GetDataTableXml() |
07 | string Xmlstring = @"<Datas> |
25 | XmlDocument Xmldoc = new XmlDocument(); |
26 | Xmldoc.LoadXml(Xmlstring); |
27 | XmlReader Xmlreader = XmlReader.Create( new System.IO.StringReader(Xmldoc.OuterXml)); |
28 | DataSet ds = new DataSet(); |
29 | ds.ReadXml(Xmlreader); |
30 | DataTable dt = ds.Tables[0]; |
SQL來源
04 | /// <returns></returns> |
05 | private DataTable GetDataTable() |
07 | DataTable dt = new DataTable(); |
11 | for ( int i = 0; i < 6; i++) |
13 | DataRow dr = dt.NewRow(); |
15 | dr[ "來源" ] = "SQL Server" ; |
Merge使用方法
02 | gv_sql.DataSource = dt1; |
06 | dt2 = GetDataTableXml(); |
07 | gv_xml.DataSource = dt2; |
11 | dt1.PrimaryKey = new DataColumn[] { dt1.Columns[ "ID" ] }; |
12 | dt2.PrimaryKey = new DataColumn[] { dt2.Columns[ "ID" ] }; |
17 | gv_merge.DataSource = dt1; |
Merge有幾個多載,我故意將兩個資料來源都存在ID為 5 的資料,如果不設Key則就會顯示兩筆ID為5的資料,如設定為true則會保留主表的資料(dt1),false則反之。
結果:
--
沒有留言:
張貼留言