0

ASPX:代码

<asp:repeater id="repeater" runat="server">

<headerTemplate></headerTemplate>

<itemtemplate></itemtemplate>

<footerTemplate> <asp:literal id=findme runate=server> </footerTeplate>

</asp:repeater>

我正在寻找的是能够在数据转发器的页脚中找到控件的源代码。当我进行数据绑定或在页面本身中查找控件时,我熟悉基本的“FindControl”,但是如何在数据转发器的页脚模板中找到控件?

这甚至可能吗?如果是这样,我怎样才能得到一些帮助,

再次感谢大家!!!

[更新]

我需要能够在数据绑定后执行此操作

4

5 回答 5

3
Protected Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
    If e.Item.ItemType = ListItemType.Footer Then
        Dim Lit As Literal = CType(e.Item.FindControl("findme"), Literal)
    End If
End Sub
于 2009-11-30T21:32:50.747 回答
2

您可以通过多种方式进行操作,具体方式取决于您何时想要访问控件。

如果您在 DataBind 期间需要它,只需在项目 Databound 中执行以下操作。

if(e.Item.ItemType == ItemType.Footer)
{
    Literal findMe = (Literal)e.Item.FindControl("findMe");
    //Your code here
}

如果您想在另一个时间点找到它,请访问转发器的 Item 集合,然后找到“Footer”项,然后从该项中找到控件。

更新

根据您添加的注释,您可以通过枚举项目集合来执行此操作,下面是一个带有 id 为 myRepeater 的转发器的示例。

foreach (RepeaterItem item in myRepeater.Items)
{
    if (item.ItemType == ListItemType.Footer)
    {
        Literal findMe = (Literal)item.FindControl("findMe");
        //Do your stuff
    }
}
于 2009-11-30T21:22:58.817 回答
1

我认为您必须在 ItemDataBound 事件处理程序中检查 ListItemType。您可以检查页眉或页脚,然后使用 FindControl 方法访问该控件。

于 2009-11-30T21:23:04.120 回答
0
Foreach (RepeaterItem item in myRepeater.Controls)

这会更好,因为 Items 集合不包含页眉和页脚

于 2009-12-25T15:01:00.597 回答
0

如果您需要在 DataBind之后获取页脚(这是 OP 似乎想要的),那么您可以使用以下内容:

RepeaterItem item= (RepeaterItem)myRepeater.Controls[myRepeater.Controls.Count - 1];
if (item.ItemType == ListItemType.Footer) {
    Literal findMe = (Literal)item.FindControl("findMe");
}
于 2019-03-16T09:19:08.700 回答