【问题标题】:Find FooterTemplate in asp.repeater在 asp.repeater 中查找 FooterTemplate
【发布时间】:2025-12-29 00:10:11
【问题描述】:

我想给 asp.net 转发器页脚模板中的控件赋值。

Dim FooterTemplate As Control = TicketRepeater.Controls(TicketRepeater.Controls.Count - 1).Controls(0)
Dim lblFooter As Literal = TryCast(FooterTemplate.FindControl("TicketTotalNumberOfTickets"), Literal)
lblFooter.Text = TicketDataTable.Rows.Count.ToString()

返回错误:

Specified argument was out of the range of valid values.
Parameter name: index

AFAIU it cant find count of controls = no controls found?。有什么建议吗?

检查点:

  • 所有的 ID 都是正确的
  • repeater 有 3 部分 headertemplate, 项目模板、页脚模板

救命!


更新

代码在databind() 之后实际工作。任何想法如何在数据绑定事件之前使其工作?

【问题讨论】:

    标签: asp.net vb.net repeater asprepeater


    【解决方案1】:

    在数据绑定之前无法完成。在您将该转发器绑定到 something 之前,它只是一个空壳,没有任何控件。绑定是创建页眉、页脚和项目的原因。

    无论如何,绑定会清除与页脚有关的任何内容,因此,如果您打算绑定到该转发器(以及为什么还要使用一个?),那么在绑定到它之前尝试对其进行操作是没有意义的。

    如果您想要一个带有页眉和页脚的空中继器,然后(可能在用户执行某些操作后)绑定到填充的数据源,您可以尝试绑定到空(但不是空)数据源。我不是 100% 确定,但我认为这应该在你的转发器中产生页眉和页脚,但没有项目。

    【讨论】: