Значение проходного вложенного повторителя в шаблоне заголовка
У меня есть вложенный повторитель, и я хочу передать значение в его заголовке. Вот мой код. Основная проблема в том, что идентификатор элемента в шаблоне заголовка также исходит из кода позади.
<asp:Repeater ID="RptrProgCategory" runat="server">
<ItemTemplate>
<asp:Repeater ID="RptrPrograms" runat="server">
<HeaderTemplate><input type="hidden" id="<%= questvalue%>"/></HeaderTemplate>
<ItemTemplate>
<a href="/" id="catid" class="off"><%# DataBinder.Eval(Container.DataItem, "cat") %></a>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
Я хочу значение в questvalue из кода позади. Есть идеи как этого добиться?
Редактировать: я хотел поместить это значение в DataTable и связать это значение в Repeater bcoz. Я хочу, чтобы вывод, подобный этому, мог быть <% # DataBinder.Eval (Container.DataItem, "questvalue")%> вместо <% = questvalue%>..но в этом случае я не могу найти контроль
Category1(id of hidden field )
subcat1
subcat2
subcat3
Category2(id of hidden field)
subcat4
subcat5..and so on..
2 ответа
Repeater mainRepeater = this.Page.FindControl("RptrProgCategory") as Repeater;
Repeater nestedRepeater = mainRepeater.FindControl("RptrProgCategory") as Repeater;
Затем вы можете выполнить FindControl в nestedRepeater для questValue. Добавьте runat='server' в questvalue, чтобы вы могли получить к нему доступ в коде.
Я пишу это по памяти, синтаксис может быть неправильным, но он должен направить вас в правильном направлении.
Установите для идентификатора элемента управления в повторителе что-то вроде mycontrolId, а затем для OnItemDataBound (или даже OnItemCreated) используйте findcontrol("mycontrolId") - и затем измените идентификатор элемента управления на свой параметр questvalue.