Как получить доступ к элементам управления в шаблоне макета списка?

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

  •  09-06-2019
  •  | 
  •  

Вопрос

Как установить свойство пользовательского элемента управления в ListView's LayoutTemplate из кода программной части?

<asp:ListView ...>
<LayoutTemplate>
<myprefix:MyControl id="myControl" ... />
</LayoutTemplate>
...
</asp:ListView>

Я хочу сделать это:

myControl.SomeProperty = somevalue;

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

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

Решение

Чтобы установить свойство элемента управления, находящегося внутри LayoutTemplate, просто используйте метод FindControl в элементе управления ListView.

var control = (MyControl)myListView.FindControl("myControlId");

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

var control = (MyControl)myListView.FindControl("myControlId");

Это будет работать, но убедитесь, что вы делаете это после привязки данных, иначе LayoutTemplate не будет создан, что вызовет ошибку.

Использовать FindControl метод для каждого ListViewItem.

var control = (MyControl)Item.FindControl("yourControlId");

На этот вопрос был дан ответ в этом вопросе о переполнении стека:
Доступ к элементу управления внутри LayoutTemplate ListView.

См. комментарий к принятому ответу Танатоса.

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

Макет создается и вызывает событие LayoutCreated, сообщающее, что макет создан в системе.

Затем вы можете использовать listview.FindControl, чтобы получить ссылку на этот элемент управления.

Если вам нужна версия VB.net, вот она:

Dim control = CType(myListView.FindControl("myControlId"), MyControl)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top