I have a Repeater control that adds rows to a table. The data inside each cell comes from a Datatable that is bound to the repeater.
Simplified Example:
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr>
<td>
<%# DataBinder.Eval(Container.DataItem, "PartNumber")%>
</td>
<td>
<%# DataBinder.Eval(Container.DataItem, "Quantity")%>
</td>
</tr>
</ItemTemplate>
In code behind I would like to be able to loop through each repeater row and get the value for Quantity for that row.
So far all I have is:
foreach (RepeaterItem ri in Repeater1.Items)
{
}
I would put the content in Labels, and access the Labels in the code behind:
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<tr>
<td>
<asp:Label ID="lblPartNumber" runat="server" Text='<%#Eval("PartNumber")%>' />
</td>
<td>
<asp:Label ID="lblQuantity" runat="server" Text='<%#Eval("Quantity")%>' />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
And in the code behind:
foreach (RepeaterItem ri in Repeater1.Items)
{
Label quantityLabel = (Label)ri.FindControl("lblQuantity");
Label partNumberLabel = (Label)ri.FindControl("lblPartNumber");
string quantityText = quantityLabel.Text;
string partNumberText = partNumberLabel.Text;
}
You could use labels:
<td>
<asp:Label ID="lblPartNumber" runat="server" Text='<%#Eval("PartNumber")%>' />
</td>
<td>
<asp:Label ID="lblQuantity" runat="server" Text='<%#Eval("Quantity")%>' />
</td>
And grab the values of the labels on the repeater OnItemDataBound event.
protected void repeater_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
foreach (Control c in e.Item.Controls)
{
if (c is Label)
{
// Grab label
Label lbl = c as Label;
String your_value = lbl.Text;
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With