2012-10-11 59 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