Использование ASP.NET Repeater Control с объектными данными List <T> - PullRequest
1 голос
/ 21 июня 2010

У меня есть веб-приложение ASP.NET, которое помещает несколько строковых данных в объект как свойства. Строковые данные получены из JSON-ленты из Twitter. Коллекция моих сообщений TwitterMessages находится в общем списке.

Я хочу использовать asp:repeater для итерации моего List<T>, чтобы отобразить все содержимое объектов, которые он содержит, используя <%# Eval("MyURL") %>. MyURL - это имя свойства внутри моего объекта TwitterMessage.

В предыдущем вопросе мне посоветовали использовать шаблон asp: Repeater для отображения моих данных в пользовательской таблице HTML. Так что возможность использовать шаблон так или иначе - это то, что меня интересует.

Я пытаюсь понять, как выполнить привязку данных к повторителю, чтобы я мог ссылаться на данные моего объекта на странице .aspx.

Мне известно, что мне нужно использовать метод ItemDataBound для создания события с привязкой к данным, чтобы я мог ссылаться на имена свойств в моем объекте строковых данных.

Надеюсь, этого достаточно, чтобы получить очень ценную помощь! :)

1 Ответ

6 голосов
/ 21 июня 2010

Довольно просто связать данные с вашим ретранслятором.В зависимости от того, где находится ваш объект списка, вы можете связать свой повторитель, используя разметку, или codebehind.

Если вы хотите сделать это в разметке, вы должны создать оболочку 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();
}
...