如何在Repeater中获取文字内容值

我有一个中继器,如下所示。 如何在代码中获取报告ID(来自hiddenContent2中的表达式)?

表达是

 

注意:我更喜欢使用“FindControl”的方法。

ASP.NET

   
<asp:TextBox ID="txtEmailRecipients" runat="server" class="textEdit" Text='' TextMode="MultiLine">

代码背后

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

试试这个,

 foreach (RepeaterItem item in rptReports.Items) { Label lblReportID= (Label)item.FindControl("lblReportID"); string ReportID = lblReportID.Text; } 

如果你使用“div”,那么试试这个:

  
<%# Eval("ReportID") %>
foreach (RepeaterItem item in rptReports.Items) { System.Web.UI.HtmlControls.HtmlGenericControl hiddenContent2 = (System.Web.UI.HtmlControls.HtmlGenericControl)item.FindControl("hiddenContent2"); string ReportID = hiddenContent2.InnerHtml; }

您可以使用Repeater的ItemIndex属性。 这是样本:

   
<%# Eval("SomeID") %>

代码behinde:

 protected void Page_Load(object sender, EventArgs e) { var objects = new object[] { new {SomeID = 1}, new {SomeID = 2}, new {SomeID = 3}, new {SomeID = 4} }; repTest.DataSource = objects; repTest.DataBind(); } protected void btnClick(object sender, EventArgs e) { var data = (object[])repTest.DataSource; foreach (RepeaterItem item in repTest.Items) { var obj = data[item.ItemIndex]; var id = obj.GetType().GetProperty("SomeID").GetValue(obj, null); } } 

所以,你需要做两件事。

  • 将DataSource转换为您的类型。 (我使用object []只是为了样本)。
  • 将数据[item.ItemIndex]转换为您的类型。 我只是使用reflection,因为我有anonimus类型,所以如果你有一个类型,你可以投射它。