我正在尝试用转发器创建一个可访问的手风琴。我需要在我的ItemTemplate中从Eval填充我的headertemplate中的列表。我有一个runat服务器,但它没有显示在我的代码隐藏中。我怎样才能填充ul?
结构:
<asp:Repeater runat="server" ID="repeater1" OnItemDataBound="repeater1_ItemDataBound">
<HeaderTemplate>
<div class="accordion">
<ul class="tab-titles" role="tablist" runat="server" ID="tabtitles">
<li aria-controls="panel1" class="title" id="tab1" role="tab" tabindex="0">Tab 1</li>
<li aria-controls="panel2" class="title" id="tab2" role="tab" tabindex="0">Tab 2</li>
</ul>
</HeaderTemplate>
<FooterTemplate>
</div>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="category" runat="server" Text='<%# Eval("cat") %>' OnDataBinding="lblCat_DataBinding"></asp:Label>
代码背后的代码:
protected void lblCampus_DataBinding(object sender, EventArgs e)
{
// tabtitles not found, need to populate Tab 1 and Tab 2, not implemneted yet.
}
答案 0 :(得分:1)
转发器和其他数据控件的页眉和页脚在事件生命周期中实际存在时有点棘手。您可能希望在项目模板中包含ul,如果需要,可以嵌套另一个转发器。
另外,您也可以在ItemCreated事件中捕获这些内容,请参阅 this answer on SO 以获取更多详细信息。
protected void rpter_ItemCreated(Object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Footer)
{
e.Item.FindControl(ctrl);
}
if (e.Item.ItemType == ListItemType.Header)
{
e.Item.FindControl(ctrl);
}
}