В настоящее время я знакомлюсь с ASP.NET, и у меня возникла проблема с динамическим содержимым внутри «ItemTemplate» в «Repeater». Вот мой код:
<asp:Repeater ID="sidebarRepeater" runat="server">
<ItemTemplate>
<li>
<a href="#<%# DataBinder.Eval(Container.DataItem, "Id") %>"><%# DataBinder.Eval(Container.DataItem, "Name") %></a>
</li>
</ItemTemplate>
</asp:Repeater>
Я получаю список ссылок с href == Id текущего элемента и текстом этого элемента. Проблема в том, что мне нужен обработчик asp.net «Onclick» для каждой из этих ссылок (это меню пользовательского элемента управления «Мастер», и при каждом щелчке я должен изменять содержимое дочернего пользовательского элемента управления в соответствии с выбранным элементом в главном элементе. ).
Какие-нибудь советы?
Изменить: я уже пробовал использовать LinkButton, например:
<li>
<asp:LinkButton ID='<%# DataBinder.Eval(Container.DataItem, "Id") %>' runat="server" OnClick="ChangeSomething">
<%# DataBinder.Eval(Container.DataItem, "Name") %>
</asp:LinkButton>
</li>
Edit2: В настоящее время моя разметка выглядит так:
<li>
<input type="hidden" value="<%# DataBinder.Eval(Container.DataItem, "Id") %>"
<asp:LinkButton runat="server" ID="LinkButton_Office" Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>'/>
</li>
В этом случае он рисует только элемент «скрытый ввод» только для первого элемента в репитере.
Edit3: полный список того, что у меня есть в настоящее время (только <li></li>
преобразовано в фактический HTML):
<div class="row">
<div class="twelve column">
<div class="row">
<div class="side-bar">
<nav>
<ul>
<asp:Repeater ID="sidebarRepeater" runat="server">
<ItemTemplate>
<li>
<asp:LinkButton ID="linkSidebar" runat="server" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "Id") %>' Text='<%# DataBinder.Eval(Container.DataItem, "Name") %>' OnClick="linkMenu_Click"></asp:LinkButton>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</nav>
</div>
<div class="page">
<asp:PlaceHolder runat="server" ID="contentPlaceholder" />
</div>
</div>
</div>
</div>
Также я забыл сказать, что на самом деле это пользовательский элемент управления .Net для проекта Umbraco. Источник данных прикреплен к ретранслятору методом protected void Page_Load(object sender, EventArgs e)
.
LinkButton
? - person Tim Schmelter   schedule 18.11.2013LinkButton
, вам просто нужно знать, какой элемент был нажат, остальное можно получить из других элементов управления, которые могут быть скрыты (например, дляID
вы можете использоватьHiddenField
). Вы получаете другие элементы управления черезFindControl
наNamimgContainer
LinkButton
вClick
событии. - person Tim Schmelter   schedule 18.11.2013DataBinder.Eval
(как указано выше) или через программный код (событиеItemDataBound
). - person Tim Schmelter   schedule 18.11.2013