データリピーターのフッターテンプレートでコントロールを見つける方法
-
10-07-2019 - |
質問
ASPX:コード
<asp:repeater id="repeater" runat="server">
<headerTemplate></headerTemplate>
<itemtemplate></itemtemplate>
<footerTemplate> <asp:literal id=findme runate=server> </footerTeplate>
</asp:repeater>
探しているのは、データリピーターのフッター内のコントロールを見つけることができるソースコードです。基本的な<!> quot; FindControl <!> quot;に慣れています。データバインドを行うとき、またはページ自体内でコントロールを探すとき、データリピーターのフッターテンプレート内でコントロールを見つけるにはどうすればよいですか?
これも可能ですか?もしそうなら、どうすれば援助を受けられますか
すべてに感謝します!!!
[更新]
iは、データバインド後にこれを行える必要があります
解決
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
他のヒント
これを行う方法はいくつかありますが、正確な方法はコントロールにいつアクセスしたいかによって異なります。
DataBind中に必要な場合は、アイテムDatabound内で次の操作を実行します。
if(e.Item.ItemType == ItemType.Footer)
{
Literal findMe = (Literal)e.Item.FindControl("findMe");
//Your code here
}
別の時点で検索したい場合は、リピーターのアイテムコレクションにアクセスし、<!> quot; Footer <!> quot;を検索します。アイテム、およびそのアイテムからコントロールを見つけることができます。
更新
追加したメモに基づいて、アイテムコレクションを列挙することでこれを行うことができます。以下は、myRepeaterのIDを持つリピーターの例です。
foreach (RepeaterItem item in myRepeater.Items)
{
if (item.ItemType == ListItemType.Footer)
{
Literal findMe = (Literal)item.FindControl("findMe");
//Do your stuff
}
}
ItemDataBoundイベントハンドラーでListItemTypeを確認する必要があると思います。ヘッダーまたはフッターを確認してから、FindControlメソッドを使用してコントロールにアクセスできます。
Foreach (RepeaterItem item in myRepeater.Controls)
Itemsコレクションにはヘッダーとフッターが含まれていないため、これはうまく機能します
DataBindの後にフッターを取得する必要がある場合(OPが望むように見える)、次を使用できます:
RepeaterItem item= (RepeaterItem)myRepeater.Controls[myRepeater.Controls.Count - 1];
if (item.ItemType == ListItemType.Footer) {
Literal findMe = (Literal)item.FindControl("findMe");
}