Значение проходного вложенного повторителя в шаблоне заголовка

У меня есть вложенный повторитель, и я хочу передать значение в его заголовке. Вот мой код. Основная проблема в том, что идентификатор элемента в шаблоне заголовка также исходит из кода позади.

<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.

Другие вопросы по тегам