2012-03-26 1 views
1

J'ai une source XML et l'un des champs est "description" qui peut varier en longueur mais est toujours assez long. Quand je passe ceci à mon répéteur asp.net, je voudrais limiter le nombre de caractères qui sont affichés par souci de cohérence et de brièveté. Est-ce qu'il y a un moyen de faire ça? Dis ... 300 caractères.Comment limiter le nombre de caractères affichés dans un enregistrement XML dans asp.net?

Merci d'avance!

Mon code frontal:

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

Mon code derrière:

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(); 
} 

Répondre

1

Je suppose que le XML peut être comme ci-dessous.

<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> 

Référence de here

Remplacez votre code HTML à suivre.

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

Enregistrez le OnItemDataBound cas de répéteur et écrire le code suivant ..

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

Une chose, vous pouvez vouloir évaluer 'desc.text' pour vous assurer de ne pas couper un mot en deux. – Robert

+0

@Pankaj, j'aime bien où tu vas avec ça. Cependant, je ne suis pas sûr que le code fonctionne. J'ai eu une erreur en essayant d'accéder au XML - Impossible de lancer l'objet de type 'System.Web.UI.WebControls.XmlDataSourceNodeDescriptor' pour taper 'System.Xml.XmlElement'. Le XML est le même que votre exemple (moins l'identifiant de ligne). Je ne suis pas assez familier avec Xml pour comprendre ce qui ne va pas. –

+0

pouvez-vous poster votre échantillon XML et le code utilisé côté u? – Pankaj

3

Peut-être que vous pouvez utiliser la sous-chaîne de la valeur de la requête XPath retourné?

+0

Cela semble être une bonne option. Comment l'appliquerais-je à l'enregistrement XML? De plus, le sous-noeud? Merci! Et pour être clair, je tire ce fichier XML et je ne le crée pas moi-même. –

Questions connexes