Si l'instruction dans les répéteurs ItemTemplate
Je suis à l'aide d'un ASP.NET Repeater
pour afficher le contenu d'un <table>
. Il ressemble à quelque chose comme ceci:
<table cellpadding="0" cellspacing="0">
<asp:Repeater ID="checkboxList" runat="server" OnItemDataBound="OnCheckboxListItemBound">
<ItemTemplate>
<tr id="itemRow" runat="server">
<td>
Some data
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
Il fonctionne très bien, mais j'aimerais avoir un if()
déclaration à l'intérieur de la ItemTemplate
afin que je puisse déterminer de façon conditionnelle si je veux imprimer un <tr>
tag.
Donc j'aimerais avoir quelque chose comme ceci:
<table cellpadding="0" cellspacing="0">
<asp:Repeater ID="checkboxList" runat="server" OnItemDataBound="OnCheckboxListItemBound">
<ItemTemplate>
<% if ( (CurrentItemCount % 2) == 0 ) { %?>
<tr id="itemRow" runat="server">
<% } %>
<td>
Some data
</td>
<% if ( (CurrentItemCount % 2) == 0 ) { %?>
</tr>
<% } %>
</ItemTemplate>
</asp:Repeater>
</table>
Est-il un moyen que je peux accomplir cela?
PS. Le CurrentItemCount
est juste. J'ai également besoin d'un moyen d'obtenir le point de comptage à l'intérieur que if()
déclaration. Mais je ne semble pas être en mesure de l'obtenir à partir d' <%# Container.ItemIndex; %>
, qui ne peut pas être utilisé avec un if()
déclaration?
Oui, je suis le réglage de code existant et je n'ai vraiment pas envie de réécrire beaucoup de fonctionnalités. Donc, si c'est possible en quelque sorte avec mon code puis je tiens vraiment à les tenir à cela.
OriginalL'auteur Vivendi | 2013-06-18
Vous devez vous connecter pour publier un commentaire.
Je voudrais utiliser le code-behind:
ID
attribut de la ligne, c'était la meilleure solution pour moi.Cette réponse ne permet pas de montrer comment utiliser une instruction if à l'intérieur d'un ItemTemplate. Il devrait vraiment être juste un commentaire.
mais il montre que le meilleur moyen si vous souhaitez utiliser une instruction if et que vous utilisez un modèle d'élément. Meilleur en termes de l'échec de la sécurité en général et de la compilation de la sécurité. Il est aussi le plus lisible et maintenable. En fait, même l'OP a préféré cette. Je woulnt utilisation ASP.NET si je veux encore de code classique ASP ou PHP. En dehors de cela je ne peut pas mettre tout cela dans un commentaire.
C'est sans doute moins lisible et maintenable. L'approche standard de ASP.NET est d'avoir à la logique de l'INTERFACE utilisateur de marque et de la logique métier dans le fichier C#. Mettant logique de l'INTERFACE utilisateur dans le fichier C# est presque aussi mauvais que d'ASP et PHP sont en train de mettre de la logique métier de code dans la marque vers le haut. Voici l'un des exemples que j'ai trouvé qui ne fait que correctement: stackoverflow.com/a/264445/556649
Le aspx est pour les contrôles et les feuilles de style(mise en page). Code ou de la logique appartient à code-behind. À mon humble avis, le code en ligne est à l'essai ou à des fins de démonstration uniquement en dehors de
Eval
/Bind
ou javascript.OriginalL'auteur Rango
Une autre manière de faire (si la performance n'est pas un problème):
Bien, très bien en fonction de votre scénario de cours. Mon expérience est que dans une utilisation normale des cas, vous finirez par l'exécution de la même façon dans tous les espaces réservés à de multiples reprises, un pour chaque condition. Les instructions contenues dans l'cachés de l'espace réservé seront toujours exécutées, même si aucun balisage est envoyé au client.
lorsque nous avons créé Visible à false la majoration ne sera pas envoyé au client.
Oui, mais je pense que, dans les cas où la visibilité condition n'est pas fixe (déterminé lors de la liaison de données), la logique est définie dans les deux espaces seront évalués/exécuté sur le serveur. Éventuellement à l'origine d'une chute des performances, mais pas nécessairement.
J'ai utilisé ce un avec aucun problème de performance. Mon répéteur ne reçoit que 100 à 200 lignes. Solution parfaite pour le contenu conditionnel.
OriginalL'auteur maets
Si vous essayez yo faire un 2 colonnes de la table ce qui pourrait faire l'affaire
Changé quelques petites choses:
id="itemRow"
pour toutes les lignes serait la cause répétées id ce qui n'est pas autorisé.Retiré
runat="server"
depuis ne fait pas de sens dans ce contexte.OriginalL'auteur Claudio Redi
J'ai 2 exemples, pour les exemples que je vais lier le répéteur à un tableau de chaînes de caractères (à des fins de démonstration seulement)
Exemple 1: Créer une fonction dans le code-behind de la coulée des éléments liés arrière en évaluer ce que jamais la valeur que vous souhaitez.
Créer Methode dans le Code-behind (exemple 1):
Dans le .aspx fichier (exemple 1):
Exemple 2: Vous pouvez utiliser directement moulé dans le .fichier aspx
DirectCast exemple (pas de code derrière):
J'espère que c'est ce que vous cherchez. Ce qui concerne.
OriginalL'auteur Amc Amsterdam - Netherlands
Si vous êtes désireux de faire quelque chose sur chaque autre élément, utilisez l'alternance de l'élément de modèle.
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.alternatingitemtemplate.aspx
OriginalL'auteur kduenke