J'essaie de parcourir le contenu d'un répéteur contenant une table html et d'utiliser le contenu de chaque cellule. Cela fonctionne bien pour les composants HTML standard, mais explose lorsque j'essaie d'utiliser un contrôle. Le code ci-dessous affichera la valeur de la première cellule, "Item # 1", mais lancera une exception HttpException en essayant d'accéder à .InnerText de la deuxième cellule. L'erreur est la suivante:Impossible d'obtenir le contenu interne de '' car le contenu n'est pas littéral
Cannot get inner content of because the contents are not literal.
J'ai essayé d'utiliser RenderControl via cette solution trouvée ailleurs, qui a échoué pour deux raisons; 1) il a rendu l'ensemble du code HTML de la première cellule et 2) il encore fait exploser lorsque vous essayez d'accéder à la seconde cellule avec le message suivant:
'LinkButton1' of type 'LinkButton' must be placed inside
a form tag with runat=server
est-il un moyen facile d'obtenir le texte LinkButton Je suis après? Le code du répéteur et C# peuvent être trouvés ci-dessous.
Le code répéteur:
<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>
Le 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);
}
}
}
Avez-vous pu résoudre ce problème? J'ai désespérément besoin d'une réponse, car j'ai les mêmes erreurs que vous. J'ai même essayé d'utiliser les contrôles System.Windows.Forms pour contourner cela, mais pas de joie. – Fandango68