2016-05-27 3 views
-1

私はC#で新しく、リーダ(XMLファイル)の値をテーブルの列に取得する方法について質問したいと思います。私は読者の値を文字列にしたい。私はlistbox1に値を取得しようとしたが、それは動作しますが、それは私が必要とするものではありません。ありがとうございました。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; 
関連する問題