/ / Repeater über XElement binden - c #, asp.net

Binde Repeater über XElement - c #, asp.net

Ich versuche meinen Repeater über XElement zu binden.

In der cs-Datei

    public void BindList()
{

XElement element = LoadXMLElement(GetList()); //Get List is another process its not a problem  I got a list.
rptrList.DataSource = from x in element.Descendants("List")
select new { Value1 = x.Element("FileName"), Value2 = x.Element("URL"), Value3 = x.Element("Thumb") };
rptrList.DataBind();

}
public  XElement LoadXMLElement(string xmlString)
{
XElement element = null;
try
{
element = XElement.Parse(xmlString);

}
catch (Exception ex)
{
throw new Exception("Unable to parse string to xmlformat");
}
return element;
}

Und in ascx:

<asp:Repeater ID="rptrList" runat="server"
onitemdatabound="rptrTemplateList_ItemDataBound">
<ItemTemplate>
<li>
<p>

<asp:Label ID="lblTemplateName" runat="server" Text="<%#Eval("FileName") %>"  />

</p>
<asp:Image ID="imgThubNail" runat="server" ImageUrl="<%#Eval("Thumb") %>" />
<br />
</li>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lblEmptyData" Text="No item To Display" runat="server" Visible="false">
</asp:Label>
</FooterTemplate>
</asp:Repeater>

Aber in ascx Eval ist nicht die Arbeit. Ich versuche es XPath aber kein glück. ich versuche zu suchen, aber nichts finden was mir hilft XElement.

Antworten:

1 für die Antwort № 1

Das Eval() Anrufe suchen FileName und Thumb, aber die Linq to XML-Abfrage gibt Objekte mit zurück Value1, Value2, und Value3. Versuchen Sie, die Abfrage zu ändern ...

rptrList.DataSource = from x in element.Descendants("List")
select new {
FileName = x.Element("FileName"),
URL = x.Element("URL"),
Thumb = x.Element("Thumb")
};

0 für die Antwort № 2

Es kann bevorzugt sein, dass Ihre Abfrage eine Liste von XElements zurückgibt, anstatt ein Objekt zu erstellen.

rptrList.DataSource = element.Descendants("List").Elements;
rptrList.DataBind();

Sobald Sie XElements an den Repeater gesendet haben, wird Ihre ItemTemplate kann so aussehen:

<%#CType(Container.DataItem, System.Xml.Linq.XElement).Attribute("FileName").Value%>