如何在数据中继器的页脚模板中找到控件

时间:2009-11-30 21:16:09

标签: c# .net findcontrol datarepeater

ASPX:代码

  

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

     

<headerTemplate></headerTemplate>

     

<itemtemplate></itemtemplate>

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

  

</asp:repeater>

我正在寻找的是能够在数据中继器的页脚内找到控件的源代码。我在做数据绑定或在页面内寻找控件时熟悉基本的“FindControl”,但是如何在数据中继器的页脚模板中找到控件呢?

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

再次感谢所有人!!!

[更新]

我需要能够在数据绑定

之后执行此操作

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

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

如果您想在DataBind中使用它,只需在Databound项目中执行以下操作。

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

如果您想在其他时间点找到它,请访问转发器的项目集合,然后找到“页脚”项目,并从该项目中找到该控件。

<强>更新

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

foreach (RepeaterItem item in myRepeater.Items)
{
    if (item.ItemType == ListItemType.Footer)
    {
        Literal findMe = (Literal)item.FindControl("findMe");
        //Do your stuff
    }
}

答案 2 :(得分:1)

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

答案 3 :(得分:0)

Foreach (RepeaterItem item in myRepeater.Controls)

这样可以更好地工作,因为Items集合不包含页眉和页脚

答案 4 :(得分:0)

如果需要在DataBind之后获得页脚(这是OP似乎想要的),则可以使用以下代码:

RepeaterItem item= (RepeaterItem)myRepeater.Controls[myRepeater.Controls.Count - 1];
if (item.ItemType == ListItemType.Footer) {
    Literal findMe = (Literal)item.FindControl("findMe");
}