Как я могу найти элемент управления в шаблоне нижнего колонтитула повторителя данных

StackOverflow https://stackoverflow.com/questions/1822448

Вопрос

ASPX :Код

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

<headerTemplate></headerTemplate>

<itemtemplate></itemtemplate>

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

</asp:repeater>

То, что я ищу, - это исходный код, чтобы иметь возможность найти элемент управления в нижнем колонтитуле повторителя данных.Я знаком с базовым "FindControl", когда я выполняю привязку данных или ищу элемент управления на самой странице, но как я могу найти элемент управления в шаблоне нижнего колонтитула повторителя данных?

Возможно ли это вообще?и если да, то как я могу, пожалуйста, получить некоторую помощь,

еще раз спасибо всем!!!

[обновление]

мне нужно иметь возможность сделать это после привязки данных

Это было полезно?

Решение

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

Другие советы

Есть несколько способов, которыми вы можете это сделать, точный способ зависит от того, когда вы хотите получить доступ к элементу управления.

Если вы хотите получить это во время привязки данных, просто выполните следующие действия внутри привязки данных элемента.

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

Если вы хотите найти его в другой момент времени, получите доступ к коллекции элементов repeater, затем найдите элемент "Нижний колонтитул", и из этого элемента вы сможете найти элемент управления.

Обновить

Основываясь на вашем добавленном примечании, вы можете сделать это, перечислив коллекцию элементов, ниже приведен пример с повторителем, который имеет идентификатор myRepeater.

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

Я думаю, вам нужно проверить ListItemType в обработчике событий ItemDataBound.Вы можете проверить наличие верхнего или нижнего колонтитула, а затем использовать метод FindControl для доступа к элементу управления.

Foreach (RepeaterItem item in myRepeater.Controls)

Это будет работать лучше, так как коллекция элементов не содержит верхнего и нижнего колонтитулов

Если вам нужно получить нижний колонтитул после Привязка данных (это то, чего, по-видимому, хочет 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