2012-10-11 146 views
0

可能重複:
show only root node in data grid編輯XML文件

 this.dataGrid1 = new System.Windows.Forms.DataGrid(); 
     this.dataGrid1.DataMember = ""; 
     this.dataGrid1.Location = new System.Drawing.Point(36, 50); 
     this.dataGrid1.Name = "dataGrid1"; 
     this.dataGrid1.Size = new System.Drawing.Size(464, 432); 
     this.dataGrid1.TabIndex = 0; 
     // 
     this.AutoScaleBaseSize = new System.Drawing.Size(35, 13); 
     this.ClientSize = new System.Drawing.Size(592, 573); 
     this.Controls.AddRange(new System.Windows.Forms.Control[] { this.dataGrid1 }); 
     ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit(); 
     this.ResumeLayout(false); 


     XmlDataDocument xmlDatadoc = new XmlDataDocument(); 
     xmlDatadoc.DataSet.ReadXml("abcd.xml"); 

     DataSet ds = new DataSet("abc"); 
     ds = xmlDatadoc.DataSet; 

     dataGrid1.DataSource = ds.Tables[0]; 

上面的代碼讀取DataGrid中的XML文件並顯示。有人可以告訴我如何編輯DataGrid,以便可以編輯XML中相應的值嗎?

回答

0

XML和Datagrid數據集不相互關聯,所以您需要通過從Dataset中編寫XML來手動完成。

0

要儲存DataSet回XML文件的變化,您只需要做

 ds.Tables[0] = (DataTable)(dataGrid1.DataSource); 
    ds.WriteXml("your path here"); 

作爲一個側面說明,你的代碼是略顯多餘。當您創建XmlDataDocument的實例時,您可以在代碼顯示時訪問它的DataSet屬性,而無需創建新的DataSet實例。如果您只想將XML文件讀取到DataSet中,則可以執行以下操作:

DataSet ds = new DataSet("abc"); 
    ds.ReadXml("abcd.xml"); 

    dataGrid1.DataSource = ds.Tables[0]; 
+0

文件正在被修改,但不會反映更改。 – akanki

+0

@akanki回答修改。 – swiftgp

+0

ds.Tables [0] =(DataTable)(dataGrid1.DataSource)...這行正確地在你身邊正常工作,因爲dis顯示錯誤無法分配ErrorProperty或索引器'System.Data.DataTableCollection.this [int]' - 它是隻讀的 – akanki