Как я могу найти элемент управления в шаблоне нижнего колонтитула повторителя данных - PullRequest
0 голосов
/ 01 декабря 2009

ASPX: код

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

<headerTemplate></headerTemplate>

<itemtemplate></itemtemplate>

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

</asp:repeater>

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

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

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

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

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

Ответы [ 5 ]

3 голосов
/ 01 декабря 2009
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
2 голосов
/ 01 декабря 2009

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

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

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

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

Обновление

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

foreach (RepeaterItem item in myRepeater.Items)
{
    if (item.ItemType == ListItemType.Footer)
    {
        Literal findMe = (Literal)item.FindControl("findMe");
        //Do your stuff
    }
}
1 голос
/ 01 декабря 2009

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

0 голосов
/ 16 марта 2019

Если вам нужно получить нижний колонтитул после DataBind (что, по-видимому, и нужно ОП), тогда вы можете использовать следующее:

RepeaterItem item= (RepeaterItem)myRepeater.Controls[myRepeater.Controls.Count - 1];
if (item.ItemType == ListItemType.Footer) {
    Literal findMe = (Literal)item.FindControl("findMe");
}
0 голосов
/ 25 декабря 2009
Foreach (RepeaterItem item in myRepeater.Controls)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...