How to loop through data in WebForms like in MVC
Rather than use a repeater, you can just loop through the list in a similar MVC type way using the <% %>
and <%= %>
tags.
<table>
<% foreach (var myItem in g) { %>
<tr><td><%= myItem.title %></td></tr>
<% } %>
</table>
As long as the property you're looping through is acessible from the aspx/ascx page (e.g. declared as protected or public) you can loop through it. There is no other code in the code behind necessary.
<% %>
will evaluate the code and <%= %>
will output the result.
Here is the most basic example:
Declare this list at your class level in your code behind:
public List<string> Sites = new List<string> { "StackOverflow", "Super User", "Meta SO" };
That's just a simple list of strings, so then in your aspx file
<% foreach (var site in Sites) { %> <!-- loop through the list -->
<div>
<%= site %> <!-- write out the name of the site -->
</div>
<% } %> <!--End the for loop -->
In WebForm you can use Repeater control:
<asp:Repeater id="cdcatalog" runat="server">
<ItemTemplate>
<td><%# Eval("title")%></td>
</ItemTemplate>
</asp:Repeater>
In code behind:
cdcatalog.DataSource = yourData;
cdcatalog.DataBind();
You can use a Repeater
with any sort of valid DataSource
(SqlDataSource
, EntityDataSource
, ObjectDataSource
) object:
- Define the DataSource
- Reference the DataSource in your Reperater
....
<asp:Repeater id="someRep" runat="server" DataSourceID="YourDataSource">
<ItemTemplate>
<tr>
<td><%# Eval("PropertyName") %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
...