Tout d'abord, je suis un n00b asp.net, si nue avec moi. :)asp: contrôle DataList avec asp: LinkButton à l'intérieur - quelque chose de bizarre
Je travaille sur des exemples dans un livre essayant d'apprendre ASP.NET, et je suis tombé sur quelque chose d'étrange là-dedans. Tout d'abord, si je le tape comme il est écrit dans le livre, VS me donne des erreurs. Ceci est le code tel qu'il est écrit dans le livre:
<asp:DataList ID="employeesList" runat="server">
<ItemTemplate>
<asp:Literal ID="extraDetailsLiteral" runat="server" EnableViewState="false" />
Name: <strong><%#Eval("Name") %></strong><br />
Username: <strong><%#Eval("Username") %></strong><br />
<asp:LinkButton ID="detailsButton" runat="server" Text=<%#"View more details about " + Eval("Name")%>
CommandName="MoreDetailsPlease"
CommandArgument=<%#Eval("EmployeeID")%> />
</ItemTemplate>
<SeparatorTemplate>
<hr />
</SeparatorTemplate>
</asp:DataList>
Alors, je l'ai cueilli à elle pendant un certain temps, et est venu avec cette solution qui compile en fait:
<asp:DataList ID="employeesList" runat="server" onitemcommand="employeesList_ItemCommand">
<ItemTemplate>
<asp:Literal ID="extraDetailsLiteral" runat="server" EnableViewState="false" />
Name: <strong><%#Eval("Name") %></strong><br />
Username: <strong><%#Eval("Username") %></strong><br />
<asp:LinkButton ID="detailsButton" runat="server" Text='View more details about <%# Eval("Name") %>'
CommandName="MoreDetailsPlease" CommandArgument='<%Eval("EmployeeID") %>' />
</ItemTemplate>
<SeparatorTemplate>
<hr />
</SeparatorTemplate>
</asp:DataList>
Notez que je J'ai également ajouté OnItemCommand dans la balise asp: DataList, maintenant je suis capable de déclencher l'événement comme prévu. Cependant, les résultats dans le navigateur ne sont pas ce que je m'attendais à obtenir; le nom et nom d'utilisateur figurant dans fort texte montrent très bien, mais le contrôle littérales qui devrait montrer des détails supplémentaires (le champ EmployeeID) et le champ Nom intérieur du LinkButton ne montreront pas leurs valeurs dans la page:
il devrait dire « EmployeeID: 1 » et « Voir plus de détails sur Zak Ruvalcaba »
donc je suppose que c'est la fonction Eval qui ne fonctionne pas lorsque dans un autre contrôle, quelqu'un peut me aider?
Merci d'avance!
Cette solution provoque le blocage de l'application, indiquant que DataBinding: 'System.Data.Common.DataRecordInternal' ne contient pas de propriété portant le nom 'Afficher plus de détails sur {0}'. Pourriez-vous regarder à nouveau? J'espère que c'est la façon de le faire, car il semble assez élégant. :) – tplive
Un demi-point pour repérer le # manquant dans le CommandArgument ..;) – tplive
Je donne à votre solution mise à jour la réponse car c'est IMHO le plus élégant. Mais TheTXI a aussi un point de vue intéressant, alors je l'ai surclassé. J'espère que je fais cela correctement, je suis nouveau à SO! Merci les gars, pour vos réponses! – tplive