Próbuję iterować zawartość repeatera zawierającego tabelę html i używać zawartości każdej komórki. Działa to dobrze dla standardowych komponentów HTML, ale wysadza się, gdy próbuję użyć kontrolki. Poniższy kod wyświetli wartość pierwszej komórki, "Element # 1", ale rzuci wyjątek HttpException podczas próby uzyskania dostępu .InnerText drugiej komórki. Błąd jest następujący:Nie można uzyskać wewnętrznej zawartości "", ponieważ zawartość nie jest literalna
Cannot get inner content of because the contents are not literal.
Próbowałem użyć RenderControl przez to rozwiązanie znaleźć gdzie indziej, które nie powiodło się z dwóch powodów; 1) to renderowane cały HTML pierwszej komórki i 2) to nadal wysadzili podczas próby dostępu do drugiej komórki z następującym komunikatem:
'LinkButton1' of type 'LinkButton' must be placed inside
a form tag with runat=server
Czy istnieje prosty sposób, aby uzyskać tekst linkButton jestem po? Kod przekaźnika i C# można znaleźć poniżej.
Kod Repeater:
<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>
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);
}
}
}
Czy byłeś w stanie to naprawić? Jestem w rozpaczliwej potrzebie odpowiedzi, ponieważ mam takie same błędy jak ty. Próbowałem nawet używać formantów System.Windows.Forms, aby ominąć to, ale bez radości. – Fandango68