Как ограничить количество символов, отображаемых в записи XML в asp.net? - PullRequest
1 голос
/ 26 марта 2012

У меня есть источник XML, и одним из полей является «описание», которое может варьироваться по длине, но всегда довольно длинное.Когда я передаю это своему репитеру asp.net, я хотел бы ограничить количество символов, отображаемых для согласованности и краткости.Есть какой-либо способ сделать это?Скажите ... 300 символов.

Заранее спасибо!

Мой код переднего конца:

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

Мой код позади:

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

Ответы [ 2 ]

3 голосов
/ 26 марта 2012

Может быть, вы можете использовать SubString для значения возвращенного запроса XPath?

1 голос
/ 26 марта 2012

Полагаю, что XML может быть таким, как показано ниже.

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

Ссылка здесь

Замените ваш HTML следующим.

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

Зарегистрируйте событие повтора OnItemDataBound и напишите следующий код ..

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) + "...";
    }
}
...