2014-06-23 141 views
0

我有一個xml文件,我想用自動填充框在其中進行搜索。 我使用下面的代碼,但它崩潰。我該如何解決問題或者有更好的方法?自動完成框錯誤

   XDocument loadedData = XDocument.Load("BankCode.xml"); 

     var data = from query in loadedData.Descendants("BankCode") 
        select new BankData 
        { 
         BankName= (string)query.Element("Bank"), 
        }; 
     this.acBox.ItemsSource = data; 

     XDocument loadedCustomData = XDocument.Load("BankCode.xml"); 
     var filteredData = from c in loadedCustomData.Descendants("Bank") 
          where c.Attribute("Code").Value == acBox.Text 
          select new BankData() 
          { 
           Code= c.Attribute("Code").Value 
          }; 
     listBox1.ItemsSource = filteredData; 

我想創建一個應用程序,當用戶按下搜索按鈕後,輸入自動完成框的銀行名稱,銀行代碼已經顯示出他/她。 (!! acBox是一個自動完成框。)

+0

請解釋'墜毀'。有拋出異常嗎?此外,您需要顯示'BankCode.xml'中的某些標記... –

+0

當我使用自動填充框中的銀行並按下搜索按鈕時,它崩潰並且調試器將此代碼顯示爲錯誤:'where c.Attribute(「代碼「)。Value == acBox.Text'並且說_An DatabindingAutoCompleteBox.DLL中發生類型'System.NullReferenceException'的異常,但未在用戶代碼中處理 附加信息:未將對象引用設置爲對象的實例。 _ – user3420360

+0

嘗試添加空檢查? 'where c.Attribute(「Code」)!= null && c.Attribute(「Code」)。Value == acBox.Text'。 NRE似乎意味着'c.Attribute(「Code」)'爲空... –

回答

0

看起來你的Bank節點中有一個沒有Code屬性。 你應該添加一個NULL檢查:

var filteredData = from c in loadedCustomData.Descendants("Bank") 
        where c.Attribute("Code") != null && c.Attribute("Code").Value == acBox.Text 
        select new BankData() 
        { 
         Code= c.Attribute("Code").Value 
        };