2010-06-21 25 views
1

我有一個ASP.NET Web應用程序,它將多個字符串數據作爲屬性放入對象中。字符串數據來源於Twitter的JSON供稿。我的TwitterMessages集合保存在通用列表中。在列表中使用ASP.NET Repeater控件<T>對象數據

我想要做的是使用asp:repeater遍歷我的List<T>以使用<%# Eval("MyURL") %>顯示它所保存的對象的所有內容。 MyURL是我的TwitterMessage對象內的一個屬性的名稱。

在上一個問題中,我被建議使用asp:Repeater模板在自定義HTML表格中顯示我的數據。所以能夠以某種方式或其他方式使用模板,真的是我感興趣的。

我在掙扎的地方在於如何執行一個數據綁定到Repeater,所以我可以引用我的對象數據。 aspx頁面。

我知道我需要使用ItemDataBound方法來創建數據綁定事件,以便我可以引用字符串數據對象中的屬性名稱。

希望這是一些非常感謝的幫助足夠的信息! :)

回答

6

這是非常簡單的數據綁定到您的中繼器。根據列表對象所在的位置,您可以使用標記或代碼隱藏綁定您的中繼器。

如果你想在標記中使用它,你應該圍繞List創建一個ObjectDataSource包裝。類似這樣的:

<asp:Repeater ID="rpt" runat="server" DataSourceID="twitterFeedSource" > 
<ItemTemplate> 
<tr><td><%# Eval("MyURL") %></td></tr> 
</ItemTemplate> 
</asp:Repeater> 

<asp:ObjectDataSource ID="twitterFeedSource" runat="server" 
    SelectMethod="GetTheListOfTwitterFeedObjects" 
    TypeName="myTwitterFeedClass" 
> 
</asp:ObjectDataSource> 

GetTheListOfTwitterFeedObjects方法應該返回對象列表。每個對象都需要有屬性MyURL。你當然可以擴展你的模板並綁定到你的twitter對象所擁有的任何其他屬性。

否則,你可以直接從代碼中完成。簡單地做這樣的事情在Page_Load中:

if (!IsPostBack) 
{ 
    myRepeater.DataSource = myGenericList; 
    myRepeater.DataBind(); 
} 
+0

RPT「的的DataSourceID'必須是類型的的IDataSource的控件的ID」是我發現了一個錯誤。是否因爲我沒有在我的代碼隱藏中引用rpt? – Alex 2010-06-21 17:05:17

+0

如果直接從代碼(而不是使用ObjectDataSource)執行此操作,請不要使用DataSourceID,而應使用DataSource。 – 2010-06-21 17:08:19

+0

我爲我的DataSource類型列表創建了一個包裝器。 我有asp:Repeater ID =「myRepeater」,我有myRepeater.DataSource = OrderedTwitterData; myRepeater.DataBind();但我收到一個錯誤消息:「myRepeater的DataSourceID必須是IDataSource類型的控件的ID,找不到具有ID'twitterFeedSource'的控件。」 – Alex 2010-06-21 18:32:23

相關問題