2016-05-27 79 views
-1

我是C#的新手,我想問問如何將讀取器(XML文件)的值賦給表列。我希望讀者的價值是一個字符串。我試圖讓這個值到一個listbox1,它可以工作,但那不是我需要的。謝謝。在Datatable列中的C#讀取器值

private void button1_Click(object sender, EventArgs e) 
    { 
     string file; 
     OpenFileDialog ofd = new OpenFileDialog(); 
     if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) ; 
     file= ofd.FileName; 


     XmlTextReader reader = new XmlTextReader(file); 
     XmlNodeType type; 

     DataSet dsload = new DataSet(); 
     dsload.ReadXml(file); 

     while (reader.Read()) 
     { 
      if (reader.Name == "name") 
      { 
       reader.Read(); 
       listBox1.Items.Add(reader.Value); 
       DataTable dt = new DataTable("MyTable"); 
       dt.Columns.Add(new DataColumn("Name", typeof(string))); 
       data.DataSource = dsload.Tables[0]; 
      } 

     } 
+0

您不能添加同一列兩次到數據表。 dt.Columns.Add()只能在讀取閱讀器的第一行時添加。 data.DataSource代碼被刪除,它什麼都不做,並會導致錯誤。 DataTable dt只能做一次,不應該在while循環中。由於您將數據放入列表框中,因此不需要。 – jdweng

回答

0
while (reader.Read()) 
     { 
      if (reader.Name == "name") 
      { 
       reader.Read(); 
       listBox1.Items.Add(reader.Value);    
      }  
     } 
DataTable dt = new DataTable("MyTable"); 
dt.Columns.Add(new DataColumn("Name", typeof(string))); 
foreach (string value in listbox1.Items) 
{ 
    dr = dt.NewRow(); 
    dr[0] = value;    
    dt.Rows.Add(dr); 
    } 
    data.DataSource=dt;