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
}

別の時点でそれを見つけたい場合は、リピーターのアイテムコレクションにアクセスし、「フッター」アイテムを見つけます。そのアイテムから、コントロールを見つけることができます。

アップデート

追加したメモに基づいて、アイテムコレクションを列挙することでこれを行うことができます。以下は、myRepeaterのIDを持つリピーターの例です。

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)

アイテムコレクションにはヘッダーとフッターが含まれていないため、これはより適切に機能します

于 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 に答える