2012-03-26 8 views
1

Ich habe eine XML-Quelle und eines der Felder ist "Beschreibung", die in der Länge variieren kann, aber immer ziemlich lang ist. Wenn ich dies an meinen asp.net-Repeater übergebe, möchte ich die Anzahl der angezeigten Zeichen aus Gründen der Konsistenz und der Kürze beschränken. Gibt es eine Möglichkeit, dies zu tun? Sag ... 300 Zeichen.Wie beschränke ich die Anzahl der Zeichen, die in einem XML-Datensatz in asp.net angezeigt werden?

Vielen Dank im Voraus!

Mein Front-End-Code:

 <asp:Repeater ID="xPathRepeater" runat="server"> 
     <ItemTemplate> 
      <li> 
       <h3><%#XPath ("title") %></h3> 
       <p><%#XPath("description")%></p> 
      </li> 
     </ItemTemplate> 
     </asp:Repeater> 

Mein Code hinter:

protected void XMLsource() 
{ 
    string URLString = "http://ExternalSite.com/xmlfeed.asp"; 

    XmlDataSource x = new XmlDataSource(); 
    x.DataFile = URLString; 
    x.XPath = String.Format(@"root/job [position() < 5]"); 

    xPathRepeater.DataSource = x; 
    xPathRepeater.DataBind(); 
} 

Antwort

1

Ich nehme an, das XML kann wie folgt sein.

<Root> 
    <Row id="1"> 
    <title>contact name 1</name> 
    <desc>contact note 1</note> 
    </Row> 
    <Row id="2"> 
    <title>contact name 2</title> 
    <desc>contact note 2</desc> 
    </Row> 
</Root> 

Referenz von here

Ersetzen Sie Ihre HTML zu folgen.

<h3><asp:Label ID="title" runat="server"></asp:Label></h3> 
<p><asp:Label ID="desc" runat="server"></asp:Label></p> 

das OnItemDataBound Ereignis von Repeater anmelden und den folgenden Code schreiben ..

protected void ED_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item) 
    { 
     Label title = (Label)e.Item.FindControl("title"); 
     title.Text = ((System.Xml.XmlElement)e.Item.DataItem).ChildNodes[0].InnerText; 

     Label desc = (Label)e.Item.FindControl("desc"); 
     desc.Text = ((System.Xml.XmlElement)e.Item.DataItem).ChildNodes[1].InnerText.Substring(1, 300) + "..."; 
    } 
} 
+0

Eine Sache, möchten Sie vielleicht den 'desc.text' bewerten, um sicherzustellen, dass Sie kein Wort in zwei Hälften schneiden. – Robert

+0

@ Pankaj, Ich mag, wohin du damit gehst. Ich bin mir jedoch nicht sicher, ob der Code funktioniert. Beim Versuch, auf das XML-Objekt zuzugreifen, ist ein Fehler aufgetreten. - Das Objekt vom Typ 'System.Web.UI.WebControls.XmlDataSourceNodeDescriptor' konnte nicht in den Typ 'System.Xml.XmlElement' umgewandelt werden. Der XML-Code entspricht dem Beispiel (abzüglich der Zeilen-ID). Ich kenne Xml nicht genug, um zu verstehen, was dort schief läuft. –

+0

können Sie Ihre Beispiel-XML und den verwendeten Code auf Ihrer Seite veröffentlichen? – Pankaj

3

Vielleicht können Sie das SubString auf dem Wert der zurückgegebenen XPath-Abfrage verwenden?

+0

, die wie eine gute Wahl zu sein scheint. Wie würde ich das auf den XML-Datensatz anwenden? Darüber hinaus ist der Unterknoten & PHgr; Vielen Dank! Und um klar zu sein - ich ziehe diese XML-Datei und nicht selbst erstellen. –

Verwandte Themen