Как найти элемент управления в ItemTemplate ListView из кода позади страницы usercontrol? - PullRequest
1 голос
/ 09 февраля 2012

На самом деле, я разрабатываю веб-шаблон с использованием ASP.NET и C #. у меня есть listview на странице usercontrol и внутри ItemTemplate у меня есть PlaceHolder, как показано ниже:

<asp:PlaceHolder ID="ph_Lv_EditModule" runat="server">  </asp:PlaceHolder>

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

PlaceHolder ph_Lv_EditModule = (PlaceHolder)lv_Uc_Module.FindControl("ph_Lv_EditModule");

или

PlaceHolder ph_Lv_EditModule = (PlaceHolder)this.lv_Uc_Module.FindControl("ph_Lv_EditModule");

Не могли бы вы помочь мне, как найти этот элемент управления в коде моей страницы usercontrol. ценим ваше внимание.

Ответы [ 2 ]

8 голосов
/ 09 февраля 2012

A ListView обычно содержит более одного элемента, поэтому NamingContainer (ищется по FindControl) вашего Placeholder не является ни UserControl, ни самим ListView.Это ListViewItem объект.Поэтому одним из мест, где можно найти ссылку, является событие ItemDataBound ListView .

protected void ListView_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem)
    {
        var ph_Lv_EditModule = (PlaceHolder)e.Item.FindControl("ph_Lv_EditModule");
    }
}

Если вам нужна ссылка где-то еще, вы должны выполнить итерации элементов ListView и затем использовать FindControlна ListViewItem.

Кстати, это такое же поведение, как и в других элементах управления DataBound, таких как GridView или Repeater.

0 голосов
/ 30 июля 2015

Как отметил Тим Шмельтер, вы также можете получить доступ к своему элементу управления, выполнив итерацию по вашему ListView следующим образом

private void HideMyEditModule()
{
    foreach (var item in lv_Uc_Module.Items)
    {
        PlaceHolder holder = item.FindControl("ph_Lv_EditModule") as PlaceHolder;
        if (holder!= null)
            holder.Visible = false;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...