2016-05-31 23 views
0

我有兩個xml文件。如果您從下拉列表中選擇,則XML文件中的數據將被移入表格中。但是,只有當我點擊第二個時才工作第一個XML文件,然後沒有任何反應,表格沒有填充。我的錯誤在哪裏?數據不會在列表視圖中傳輸

private void listView1_SelectedIndexChanged(object sender, EventArgs e) 
    { 

     if (listView1.SelectedItems.Count > 0) 
     { 
      ListViewItem lv = listView1.SelectedItems[0]; 
      textBox1.Text = lv.SubItems[1].Text; 
      textBox2.Text = lv.SubItems[2].Text; 
      textBox3.Text = lv.SubItems[3].Text; 

     } 

    } 

    private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e) 
    { 
     if (comboBox1.SelectedIndex == 0) 
     { 
      DataSet ds = new DataSet(); 
      DataTable dt = new DataTable(); 
      ds.ReadXml(@"C:\XMLFile1.xml"); 
      dt = ds.Tables[0]; 
      if (dt.Rows.Count > 0) 
      { 
       int i = 0; 
       foreach (DataRow Dr in dt.Rows) 
       { 
        ListViewItem lv = new ListViewItem(dt.Rows[i]["ID"].ToString()); 
        lv.SubItems.Add(dt.Rows[i]["Name"].ToString()); 
        lv.SubItems.Add(dt.Rows[i]["group"].ToString()); 
        lv.SubItems.Add(dt.Rows[i]["document"].ToString()); 
        i++; 
        listView1.Items.Add(lv); 


       } 
      } 
      if (comboBox1.SelectedIndex == 1) 
      { 
       DataSet ds1 = new DataSet(); 
       DataTable dt1 = new DataTable(); 
       ds1.ReadXml(@"C:\XMLFile1.xml"); 
       dt1 = ds1.Tables[0]; 
       if (dt1.Rows.Count > 0) 
       { 
        int i = 0; 
        foreach (DataRow qw in dt1.Rows) 
        { 
         ListViewItem lv = new ListViewItem(dt1.Rows[i]["ID"].ToString()); 
         lv.SubItems.Add(dt1.Rows[i]["Name"].ToString()); 
         lv.SubItems.Add(dt1.Rows[i]["group"].ToString()); 
         lv.SubItems.Add(dt1.Rows[i]["document"].ToString()); 
         i++; 
         listView1.Items.Add(lv); 


        } 
       } 
      } 
+0

代碼可能沒有任何問題。 ListView沒有意識到控件發生了任何更改,因此控件不會刷新。通常在填充之前清理行將有所幫助。 clear方法調用將刷新控件的控件paint方法,然後添加新的數據可能會起作用。 – jdweng

+0

但是,如果我只是選擇將填寫表中的第二個文件,它將是空的。在第一個或第二個xml文件中填入表 – axay

+0

如果僅將第二個xml文件添加到ListView而不添加第一個文件,會發生什麼? – jdweng

回答

0

你有兩個選擇comboBox1完全相同的文件: ds.ReadXml(@"C:\XMLFile1.xml");。我認爲第二個文件的@"C:\XMLFile1.xml"必須不同。

private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e) 
{ //Opening bracket 1 
    if (comboBox1.SelectedIndex == 0) //Option 1 
    { //Opening bracket 2 

     ds.ReadXml(@"C:\XMLFile1.xml"); //<<====================== File1 
     dt = ds.Tables[0]; 
     if (dt.Rows.Count > 0) 
     {//Opening bracket 3 
      int i = 0; 
      foreach (DataRow Dr in dt.Rows) 
      {//Opening bracket 4 
       ListViewItem lv = new ListViewItem(dt.Rows[i]["ID"].ToString()); 
       lv.SubItems.Add(dt.Rows[i]["Name"].ToString()); 
       lv.SubItems.Add(dt.Rows[i]["group"].ToString()); 
       lv.SubItems.Add(dt.Rows[i]["document"].ToString()); 
       i++; 
       listView1.Items.Add(lv); 


      }//Closing bracket 4 
     }//Opening bracket 3 
    }//Closing Bracket 2 
    if (comboBox1.SelectedIndex == 1) //Option 2 
    { 
     DataSet ds1 = new DataSet(); 
     DataTable dt1 = new DataTable(); 
     ds1.ReadXml(@"C:\XMLFile1.xml");  //<<====================== still File1 
     dt1 = ds1.Tables[0]; 
     if (dt1.Rows.Count > 0) 
     { 
      int i = 0; 
      foreach (DataRow qw in dt1.Rows) 
      { 
       ListViewItem lv = new ListViewItem(dt1.Rows[i]["ID"].ToString()); 
       lv.SubItems.Add(dt1.Rows[i]["Name"].ToString()); 
       lv.SubItems.Add(dt1.Rows[i]["group"].ToString()); 
       lv.SubItems.Add(dt1.Rows[i]["document"].ToString()); 
       i++; 
       listView1.Items.Add(lv); 



      } 
     } 
    } 
}//Closing Bracket 1 

編輯:

  1. 想想你的開啓和關閉括號
  2. 你只需要添加到列表視圖listView1.Items.Add(lv)。除非刪除舊條目,否則新條目會出現在列表的底部或混入。
+0

哦,我的失敗。程序不能正常工作,即使這個問題正確 – axay

+0

看看我的答案再次,你失蹤關閉括號2(第一個if語句塊,這意味着你的「if(comboBox1.SelectedIndex == 1) 'if(comboBox1.SelectedIndex == 0)'塊,這意味着它永遠不會被執行 – Zero

相關問題