2012-03-26 2 views
1

私はXMLソースを持っていますが、フィールドの1つは「説明」です。長さは変わりますが、常に長くなります。これを私のasp.netリピータに渡しているとき、一貫性と簡潔さのために表示される文字の数を制限したいと思います。これを行う方法はありますか?言う... 300文字。asp.netのXMLレコードに表示される文字数を制限するにはどうすればよいですか?

ありがとうございます!

私のフロントエンドコード:

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

答えて

1

私はXMLが以下のようになると仮定します。 here

から

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

は...良いオプションのように思える

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

一つのことですが、 'desc.text'を評価して単語を半分にしないようにすることができます。 – Robert

+0

@Pankaj、私はあなたがこれで行くところが好きです。しかし、私はコードが動作するのか分からない。 XMLにアクセスしようとしたときにエラーが発生しました - タイプ 'System.Web.UI.WebControls.XmlDataSourceNodeDescriptor'のオブジェクトをキャストして 'System.Xml.XmlElement'と入力できません。 XMLは、あなたの例と同じです(行idより少ない)。私はXmlで何が間違っているのか理解するのに十分に精通していません。 –

+0

サンプルXMLとur側で使用されているコードを投稿できますか? – Pankaj

3

たぶん、あなたは、返されたXPathクエリの値に部分文字列を使用できますか?

+0

をRepeaterのOnItemDataBoundイベントを登録し、次のコードを記述します。これをXMLレコードにどのように適用すればよいですか?また、ありがとう!そして明確にするために、私はこのXMLファイルを引っ張って、それを自分で作成していません。 –

関連する問題