Как я могу найти элемент управления в шаблоне нижнего колонтитула повторителя данных
-
10-07-2019 - |
Вопрос
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");
}