【问题标题】:How to populate a list in a Repeater - HeaderTempalte from the ItemTemplate如何在中继器中填充列表 - 来自 ItemTemplate 的 HeaderTempalte
【发布时间】:2015-07-08 19:46:30
【问题描述】:

我正在尝试使用中继器创建一个可访问的手风琴。我需要从我的 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.
    }

【问题讨论】:

  • 您能否发布您的转发器和您的 repeater1_ItemDataBound 方法的完整代码?
  • 完整的代码只是一堆带有数据表和 ado 调用的 sphagetti 代码。这个中继器基本上就是所有......
  • 你是如何引用tabtitles的?
  • @runners3431 我问是因为不包括整个中继器,并且中继器代码中未提及您的事件
  • @JunePaik 就像一个 html 控件,我需要创建列表项然后添加它。有这方面的现有代码吗?

标签: c# asp.net


【解决方案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);
            }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 2012-05-19
    相关资源
    最近更新 更多