2013-12-25 2 views
2

Я пытаюсь получить некоторые данные из моего файла XML в ListView .Я немножко confused.This то, что я до сих пор .Как можно это сделать .THANKS заранееПутаница чтение XML-файл

XDocument doc=XDocument.Load(Server.MapPath("PhoneBook.xml")); 
var q = from c in doc.Descendants("Persons") select new 
{ 
    name=c.Element("Name"), 
    phone=c.Element("Phone"), 
}; 

foreach (var item in q) 
{ 
    var lvi = new ListViewItem(item.name); 
} 
+0

Какая ошибка (ы) вы получаете? –

ответ

0

FIrst часть вашего кода выглядит хорошо. Вам не нужен цикл foreach. Вот как выглядит ваш код:

XDocument doc = XDocument.Load(Server.MapPath("PhoneBook.xml")); 
var q = from c in doc.Descendants("Persons") 
     select new 
     { 

      name = c.Element("Name"), 
      phone = c.Element("Phone"), 
     }; 

ListView1.DataSource = q; 
ListView1.DataBind(); 

В разметке вы можете связать любое поле шаблона с именем или телефоном. Ваш ListView может выглядеть следующим образом:

<asp:ListView runat="server" ID="ListView1"> 
    <LayoutTemplate> 
     <table runat="server" id="table1"> 
      <tr runat="server" id="itemPlaceholder"> 
      </tr> 
     </table> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <tr id="Tr1" runat="server"> 
      <td id="Td1" runat="server"> 
       <asp:Label ID="NameLabel" runat="server" 
        Text='<%#Eval("Name") %>' /> 
      </td> 
      <td id="Td2" runat="server"> 
       <asp:Label ID="PhoneLabel" runat="server" 
        Text='<%#Eval("Phone") %>' /> 
      </td> 
     </tr> 
    </ItemTemplate> 
</asp:ListView> 

И эта схема будет производить этот вид продукции:

enter image description here

Надеется, что это помогает!

0

трудно предсказать без образца XML, но я заметил, что вы пропали без вести элемент «Root» и основанный на том, что следующий элемент для навигации являются элементами внутри «Root:

XDocument doc=XDocument.Load(Server.MapPath("PhoneBook.xml"));  

var items = (from item in doc.Root.Elements("Persons") 
select new {  
    name=c.Element("Name"), 
    phone=c.Element("Phone"), 
};  

Если это не ответ, пожалуйста, поделитесь образцом вашего XML, это поможет нам предоставить лучший ответ.

0

Во-первых изменить свой код, как это потому, что вы назначаете имя и телефон для XElement, а не значение элемента:

var q = from c in doc.Descendants("Persons") 
    select new { 
       name=c.Element("Name").Value, 
       phone=c.Element("Phone").Value 
       }; 

Тогда попробуйте этот код:

listView1.View = View.Details; 
listView1.Columns.Add("Person Name", 200, HorizontalAlignment.Left); 
listView1.Columns.Add("Phone Number", 100, HorizontalAlignment.Left); 

foreach (var item in q) 
{ 
    ListViewItem listItem = new ListViewItem(); 
    listItem.Text = item.Name; 
    listItem.SubItems.Add(item.Phone); 
    listView1.Items.Add(listItem); 
}