使用带有List <t>对象数据的ASP.NET Repeater控件</t>

时间:2010-06-21 16:37:11

标签: c# asp.net json repeater

我有一个ASP.NET Web应用程序,它将多个字符串数据作为属性放入对象中。字符串数据来自Twitter的JSON提要。我的TwitterMessages集合保存在通用列表中。

我想要做的是使用asp:repeater来遍历我的List<T>以使用<%# Eval("MyURL") %>显示它所拥有的对象的所有内容。 MyURL是我的TwitterMessage对象中的属性名称。

在上一个问题中,我被建议使用asp:Repeater模板在自定义HTML表格中显示我的数据。因此能够以某种方式或其他方式使用模板,这才是我真正感兴趣的。

我正在努力研究如何对Repeater执行数据绑定,以便我可以在.aspx页面中引用我的对象数据。

我知道我需要使用ItemDataBound方法来创建一个数据绑定事件,以便我可以在我的字符串数据对象中引用属性名称。

希望有足够的信息获得一些非常感谢的帮助! :)

1 个答案:

答案 0 :(得分: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();
}