Прежде всего, я asp.net n00b, так голый со мной. :)asp: Управление DataList с asp: LinkButton внутри - что-то странно
Я работаю над примерами в книге, пытаясь изучить ASP.NET, и я наткнулся на что-то странное там. Прежде всего, если я напечатаю его так, как написано в книге, VS дает мне ошибки. Это код, как это написано в книге:
<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>
Итак, я сорвал у него на некоторое время, и пришел с этим решением, которое на самом деле компилирует:
<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>
Обратите внимание, что я 've также добавил OnItemCommand в теге asp: DataList, так что теперь я могу запустить событие, как ожидалось.
Однако результаты в браузере не то, что я ожидаю; Имя и Имя пользователя в списке сильного текста показать просто отлично, но Буквальное управление, который должен показать дополнительные детали (поле EmployeeID) и поле Имени внутри LinkButton не будут показывать их значения на странице:
он должен сказать «EmployeeID: 1» и «Просмотреть более подробную информацию о Zak Ruvalcaba»
Так что я предполагаю, что это функция Eval, что не работает, когда внутри другого элемента управления, может кто-нибудь помочь мне?
Заранее благодарен!
Это решение заставляет приложение сбой, говоря DataBinding: «System.Data.Common.DataRecordInternal» не содержит свойства с именем «Посмотреть более подробную информацию о {0}». Не могли бы вы снова взглянуть на него? Надеюсь, это способ сделать это, поскольку он выглядит довольно элегантным. :) – tplive
Половина точки для определения отсутствующих # в CommandArgument ..;) – tplive
Я даю вашему обновленному решению ответ, поскольку он ИМХО более изящный. Но TheTXI тоже заинтересовался, поэтому я поддержал его. Надеюсь, я делаю это правильно, я новичок в SO! Спасибо, ребята, за ваши ответы! – tplive