Impossible d'obtenir le contenu interne de '' parce que le contenu n'est pas littéral
Je suis en train de parcourir le contenu d'un Répéteur contenant un tableau html, et d'utiliser le contenu de chaque cellule. Cela fonctionne très bien pour du HTML standard des composants, mais explose lorsque j'essaie d'utiliser un contrôle. Le code ci-dessous affichera la valeur de la première cellule, "l'Élément n ° 1", mais va jeter un HttpException lorsque vous tentez d'accéder .InnerText de la deuxième cellule. L'erreur est la suivante:
Cannot get inner content of because the contents are not literal.
J'ai essayé d'utiliser RenderControl via cette solution trouvé d'ailleurs, qui a échoué pour deux raisons: 1) elle a rendu l'intégralité du code HTML de la première cellule et 2) il soufflait toujours en place lorsque vous essayez d'accéder à la deuxième cellule, avec le message suivant:
'LinkButton1' of type 'LinkButton' must be placed inside
a form tag with runat=server
Est-il un moyen facile pour obtenir le LinkButton le texte, je suis après? Répéteur code et C# peut être trouvé ci-dessous.
La répétition de code:
<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);
}
}
}
source d'informationauteur cqx2234
Vous devez vous connecter pour publier un commentaire.
Pour quelqu'un d'autre qui arrive ici:
Vous ne pouvez pas obtenir
InnerHtml
ouInnerText
sur unControl
sauf si son contenu littéral, c'est à dire il n'ya pas de contrôles de serveur ou avec des commandes derunat="server"
à l'intérieur de ce qui est requis renduItérer/recurse à travers des contrôles enfants dans la collection de Contrôles. Lorsque vous arrivez à un nœud feuille (pas d'enfants), puis d'accéder à ce contrôle
InnerText
propriété.chaîne de valeur = ((Littérale) de la(des cellules.Les témoins[0])).Texte
Aussi, assurez-vous que vous n'avez rien de tel en essayant d'accéder à un autre point de vue contrôle, tandis qu'un autre contrôle est activé dans une multi affichage de contrôle.