문제

ASPX : 코드

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

<headerTemplate></headerTemplate>

<itemtemplate></itemtemplate>

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

</asp:repeater>

내가 찾고있는 것은 데이터 리피터의 바닥 글 내에서 컨트롤을 찾을 수있는 소스 코드입니다. 나는 데이터를 수행하거나 페이지 자체 내에서 컨트롤을 찾을 때 기본 "FindControl"에 익숙하지만 데이터 리피터의 바닥 글 템플릿 내에서 어떻게 컨트롤을 찾을 수 있습니까?

이것이 가능합니까? 그렇다면 어떻게 도움을받을 수 있습니까?

모두에게 다시 한번 감사드립니다 !!!

업데이트

Databind 이후 에이 작업을 수행 할 수 있어야합니다.

도움이 되었습니까?

해결책

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 중에 원하는 경우 항목 데이터 라운드 내부에서 다음을 수행하십시오.

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
    }
}

ItemDatabound 이벤트 핸들러에서 ListItemType를 확인해야한다고 생각합니다. 헤더 또는 바닥 글을 확인한 다음 FindControl 메소드를 사용하여 컨트롤에 액세스 할 수 있습니다.

Foreach (RepeaterItem item in myRepeater.Controls)

항목 컬렉션에는 헤더와 바닥 글이 포함되어 있지 않으므로 더 잘 작동합니다.

바닥 글을 가져와야하는 경우 ~ 후에 Databind (OP가 원하는 것처럼 보이는 것) : 다음을 사용할 수 있습니다.

RepeaterItem item= (RepeaterItem)myRepeater.Controls[myRepeater.Controls.Count - 1];
if (item.ItemType == ListItemType.Footer) {
    Literal findMe = (Literal)item.FindControl("findMe");
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top