2016-05-27 4 views
-1

Я новичок в C#, и я хотел бы спросить, как можно получить значение читателя (XML-файла) в столбец таблицы. Я хочу, чтобы значение читателя было строкой. Я попытался получить значение в listbox1, и он работает, но это не то, что мне нужно. Спасибо.Значение C# Reader в столбцах Datatable

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

Вы не можете добавлять один и тот же столбец дважды в DataTable. 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; 
Смежные вопросы