Estoy tratando de iterar sobre el contenido de un repetidor que contiene una tabla html y uso el contenido de cada celda. Esto funciona bien para componentes HTML estándar, pero explota cuando trato de usar un control. El siguiente código imprimirá el valor de la primera celda, "Artículo n. ° 1", pero arrojará una HttpException cuando intente acceder a .InnerText de la segunda celda. El error es el siguiente:No se puede obtener el contenido interno de '' porque el contenido no es literal
Cannot get inner content of because the contents are not literal.
He intentado utilizar RenderControl a través de esta solución que se encuentra en otro lugar, que falló por dos razones; 1) se vuelve todo el HTML de la primera celda y 2) que todavía explotó al intentar acceder a la segunda celda con el siguiente mensaje:
'LinkButton1' of type 'LinkButton' must be placed inside
a form tag with runat=server
¿Hay una manera fácil de obtener el texto LinkButton estoy ¿después? El código repetidor y C# se pueden encontrar a continuación.
El código repetidor:
<asp:Repeater ID="Rep1" runat="server">
<HeaderTemplate>
<table id="Table1" class="data">
</HeaderTemplate>
<ItemTemplate>
<tr id="Row" runat="server">
<td>Item #1</td>
<td><asp:LinkButton ID="LinkButton1" OnClick="DoSomething"
Text="Item #2" runat="server" /></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
El C#:
foreach (RepeaterItem item in Rep1.Items)
{
HtmlTableRow row = item.Controls[0].FindControl("Row") as HtmlTableRow;
foreach (HtmlTableCell cell in row.Cells)
{
if (cell.InnerText != string.Empty)
{
Console.WriteLine(cell.InnerText);
}
}
}
¿Pudo arreglar esto por favor? Necesito desesperadamente una respuesta, ya que recibo los mismos errores que tú. Incluso he intentado utilizar los controles de System.Windows.Forms para evitar esto, pero no me alegro. – Fandango68