Search code examples
c#asp.net.netrepeater

How to get literal content value in Repeater


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;
    }
}

Solution

  • 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;
     }