I have a repeater as shown below. How to get the Report ID in code behind (from the expression inside hiddenContent2) ?
The expression is
<%# Eval("ReportID") %>
Note: I prefer a method that does not use "FindControl".
ASP.NET
<asp:Repeater ID="rptReports" runat="server">
<HeaderTemplate>
<div></div>
</HeaderTemplate>
<ItemTemplate>
<div id="repeaterIdentifier" class="repeaterIdentifier">
<div id="reportTitle" class="reportTitle">
<%# Eval("Title") +":" %>
</div>
<div id ="reportFrequency" class="reportFrequency">
<%# " Frequency - "+ Eval("Frequeny") %>
</div>
</div>
<div class="reportContent">
<div class="repeaterLine">
<asp:TextBox ID="txtEmailRecipients" runat="server" class="textEdit" Text='<%# Eval("Recipients")%>' TextMode="MultiLine"></asp:TextBox>
</div>
</div>
<div id="hiddenContent2">
<%# Eval("ReportID") %>
</div>
</ItemTemplate>
</asp:Repeater>
Code Behind
protected void Save_Click(object sender, EventArgs e)
{
foreach (RepeaterItem item in rptReports.Items)
{
foreach(Control c in item.Controls)
{
string test1 = c.ID;
Type t = c.GetType();
}
string emails = ((TextBox)item.Controls[1]).Text;
}
}
Try this,
foreach (RepeaterItem item in rptReports.Items)
{
Label lblReportID= (Label)item.FindControl("lblReportID");
string ReportID = lblReportID.Text;
}
If you are using "div", then try this:
<div id="hiddenContent2" runat="server">
<%# Eval("ReportID") %>
</div>
foreach (RepeaterItem item in rptReports.Items)
{
System.Web.UI.HtmlControls.HtmlGenericControl hiddenContent2 = (System.Web.UI.HtmlControls.HtmlGenericControl)item.FindControl("hiddenContent2");
string ReportID = hiddenContent2.InnerHtml;
}