2016-11-02 41 views
0


我的C#的WinForms應用程序有3個GridView的,我想在一個XML文件中保存。
對於一個GridView的我不喜歡這樣寫道:
如何轉換多於一個的GridView到一個XML文件

DataTable dst = new Datatable(); 
dst = (DataTable)grdViewBGM.DataSource; 
dst.TableName = "GridView"; 
dst.WriteXml(folderPath + String.Format("\\{0}.xml", filename), true); 

這可能是簡單的解決,但我沒有一個線索,除了使3 XML文件是一切,但完美。
如果有人能給我一個很棒的建議,謝謝。

所創建的文件是這樣的:

<?xml version="1.0" standalone="yes"?> 
<DocumentElement> 
    <GridView> 
     <Genre>Wald</Genre> 
     <Pfad>C:\Users\Kong\Desktop\Beards\Wald</Pfad> 
     <Hotkey>1</Hotkey> 
    </GridView> 
    <GridView> 
     <Genre>Wald Nachts</Genre> 
     <Pfad>C:\Users\Kong\Desktop\Beards\Wald Nachts</Pfad> 
     <Hotkey>2</Hotkey> 
    </GridView> 
</DocumentElement> 
+0

你實際創建一個文件?這個文件是什麼樣的?你可以發佈其內容嗎?此外,當你調用WriteXml時,你確定dst變量具有合法的結構嗎? –

+0

GridView的來源在哪裏?如果源已經是一個DataTable可能非常容易。 – jdweng

+0

是的,我擴大了我的職位,你Marc和肯定jdweng在GridView的來源實際上是一個DataTable :) – KommissarKong

回答

0

一種可能的方式是填充Tables集合DataSet的。它有一個寫入xml的方法。

void MakeXML(string fileName) 
{ 
    DataSet ds = new DataSet(); 
    foreach(DataGridView dgv in this.Controls.OfType<DataGridView>()) 
    { 
     ds.Tables.Add((DataTable)dgv.DataSource); 
    } 
    ds.WriteXml(fileName); 
} 

如果DataGridView的不是當前的形式(this),無論使用何種控制包含它們的名字。如果它們分開,請保留每次創建DataGridView時添加的全局List<DataGridView>,然後使用它。

+0

謝謝你的建議,但「this.Controls.OfType ()」是空的:^( – KommissarKong

+0

@KommissarKong - 我增加了更多的解釋,我的回答 – tinstaafl

+0

我明白你的意思,但GridView的應該在這個時可用。我問this.Controls.OfType

相關問題