2012-10-11 64 views
0

問題:我已經將數據保存到XML文件中,但是當我重新打開應用程序時,XML文件中的數據應填充我的列表框,但沒有任何顯示。我已經在這裏2個小時了,找不到問題。列表框不顯示來自XML文件的數據

我的代碼加載XML文件:

public void Load() 
{ 
    XDocument myDoc = XDocument.Load(".../.../parking.xml"); 

    var ticks = from xElem in myDoc.Descendants("Ticket") 
       select new Ticket 
       { 
        TimeIn = Convert.ToDateTime(xElem.Element("TimeIn").Value), 
        TicketNum = Convert.ToInt32(xElem.Element("TicketNumber").Value), 
       }; 

    this.Clear(); 

    AddRange(ticks); 
} 

而且我的代碼,試圖填充列表框:

{ 
     newList = new TickList(); 

     newList.Load(); 

     foreach (var nTick in newList) 
     { 
      spotList.Items.Add(nTick.ToString()); 
     } 
    } 

編輯:http://pastebin.com/YwPj0Nxc

無法找到一個好辦法格式,在這個網站上,但這是XML文件。

藍精靈編輯:添加引擎收錄XML

<?xml version="1.0" encoding="utf-8"?> 
<Tickets> 
    <Ticket> 
    <TicketNum>1</TicketNum> 
    <TimeIn>2012-10-11T17:49:49.896445-05:00</TimeIn> 
    </Ticket> 
    <Ticket> 
    <TicketNum>2</TicketNum> 
    <TimeIn>2012-10-11T17:49:50.2714664-05:00</TimeIn> 
    </Ticket> 
    <Ticket> 
    <TicketNum>3</TicketNum> 
    <TimeIn>2012-10-11T17:49:50.4304755-05:00</TimeIn> 
    </Ticket> 
    <Ticket> 
    <TicketNum>4</TicketNum> 
    <TimeIn>2012-10-11T17:49:50.5944849-05:00</TimeIn> 
    </Ticket> 
</Tickets> 
+0

你確定你的TicketList正在填充?嘗試在加載後放置一個斷點並查看存儲在newList中的數據。 –

+0

您正在填充正確的列表框,您的問題在於如何加載xml文件。如果您向我們提供這些信息,我們可以告訴您在閱讀中出錯的地方。 –

+0

兩者都在那裏,我已經覆蓋ToString()包括兩個。 – Kefkamaydie

回答

1

無法不看XML文件本身回答。確保所有屬性和名稱都與查詢匹配。確保TicketList具有數據,然後將其綁定到ListBox。您需要廣泛的調試。我認爲這個問題是你的Linq查詢。你需要簡化你的LINQ查詢。

更新:您的元素名稱不匹配。我認爲LINQ也缺少它的外部「Tickets」元素。它應該去「Tickets」中的每個元素。它說「TicketNum」,但XML有「TicketNumber」。

+0

更正了TicketNum/TicketNumber錯誤,現在列表框將加載第一條記錄,但它將1作爲單獨條目放置在列表框中,然後將實際的第一條記錄放在第二條線上。並且不加載文件中的最後3條記錄。另外,我對LINQ和XML並不熟悉,當你說我的LINQ缺少外部「Tickets」元素時,你不明白你的意思,你能詳細說明一下嗎?謝謝。 – Kefkamaydie

0

貌似沒有在XML VS LINQ的一個拼寫錯誤:

Convert.ToInt32(xElem.Element("TicketNumber").Value) 

應該是:

Convert.ToInt32(xElem.Element("TicketNum").Value) 
+0

是的,iefpw提到,我糾正了。但它導致了另一個問題。現在列表框將顯示:1(在一行上),然後在下一行顯示第一條記錄。但是無法加載xml中的最後3條記錄。 – Kefkamaydie

+1

這確實完全解決了它。只是在註冊之前必須清除xml並由於某種原因重新構建它。全清! – Kefkamaydie