Есть ли способ доступа к элементам управления страницы из пользовательского элемента управления. У меня есть некоторые элементы управления на моей странице, и я хочу получить доступ к этим элементам управления из пользовательского элемента управления.Как получить доступ к элементам управления страницы из пользовательского элемента управления?
ответ
YourControlType ltMetaTags = null;
Control ctl = this.Parent;
while (true)
{
ltMetaTags = (ControlType)ctl.FindControl("ControlName");
if (ltMetaTags == null)
{
ctl = ctl.Parent;
if(ctl.Parent == null)
{
return;
}
continue;
}
break;
}
Пример
System.Web.UI.WebControls.Literal ltMetaTags = null;
Control ctl = this.Parent;
while (true)
{
ltMetaTags = (System.Web.UI.WebControls.Literal)ctl.FindControl("ltMetaTags");
if (ltMetaTags == null)
{
if(ctl.Parent == null)
{
return;
}
ctl = ctl.Parent;
continue;
}
break;
}
Parent.FindControl("hdnValue")
Родитель может быть другим пользовательским контролем. Лучше использовать this.Page. –
@ChrisGessler, ищущий элемент управления на странице, не является автоматической гарантией, чтобы найти то, что вы ищете. Страница является элементом управления, так же как UserControl является элементом управления, а FindControl() - это метод, который будет выполнять поиск только в текущей коллекции Child. Вам нужно сделать рекурсивный поиск, если вы точно не знаете, где в дереве начать поиск http://sharpertutorials.com/recursive-findcontrol/ –
Есть на самом деле несколько способов сделать это:
Создать общественную собственность под вашим контролем пользователя
public Button PageButton { get; set; }
Затем назначьте его на страницы OnInit или OnLoad метод
myUserControl.PageButton = myPageButton;
Вы можете сделать управление общедоступным и unbox Страница:
public Button PageButton { get { return this.myPageButton; } }
В пользовательском элементе управления:
MyPage myPage = (MyPage)this.Page;
myPage.PageButton.Text = "Hello";
Самый медленный, но самый простой способ будет использовать FindControl:
this.Page.FindControl("myPageButton");
Получить «null refernce exception» '((Этикетка) this.Page .FindControl («mylabel»)). ID; ' –
Я вызываю это на странице загрузки моего пользовательского элемента управления –
@just_name - вам придется опубликовать код для меня, чтобы устранить его, но то, что вы должны работать, ЕСЛИ элемент управления «myLabel» существует на странице, и пользовательский элемент управления также добавлен на страницу. –
свою работу для меня:
I объявить ярлык в Моем .aspx
страница
<asp:Label ID="lblpage" runat="server" Text="this is my page"></asp:Label>
<asp:Panel ID="pnlUC" runat="server"></asp:Panel>
В .aspx.cs
У меня добавить UserControl через Panel
UserControl objControl = (UserControl)Page.LoadControl("~/ts1.ascx");
pnlUC.Controls.Add(objControl);
и доступ из .ascx
в UserControl так:
Page page = this.Page;
Label lbl = page.FindControl("lblpage") as Label;
string textval = lbl.Text;
пользовательский элемент управления, созданный во время выполнения, как этот –
'MyBaseControl ctrl = (MyBaseControl) LoadControl (« UserControls/»+ page_new_name); pnl_PageNew_UC.Controls.Add (ctrl);' ' –
@just_name. Я добавляю usercontrol через панель, чем доступ к значению метки с помощью этого кода. Попробуйте это. – Jigs
- 1. Доступ к элементам управления пользовательского элемента управления внутри дочернего пользовательского элемента управления
- 2. Как мне получить доступ к элементам управления страницы из моего настраиваемого серверного элемента управления?
- 3. Быстрый доступ к элементам управления пользовательского
- 4. доступ к элементам управления с веб-страницы
- 5. Как получить доступ к событию контейнеров из пользовательского элемента управления?
- 6. Доступ к элементам управления внутри динамически сгенерированного элемента управления
- 7. Как получить доступ к элементам управления внутри управления репитером asp
- 8. Как получить доступ к элементам пользовательского интерфейса пользовательского элемента управления в Expression Blend
- 9. Доступ компонент пользовательского элемента управления
- 10. Как получить доступ к элементам управления WPF из фонового потока
- 11. Как получить доступ к элементам управления C# из статических классов?
- 12. Как получить доступ к элементам управления из другого класса?
- 13. Как получить доступ к элементам пользовательского интерфейса одного элемента управления представлением из объектного класса c?
- 14. Как получить доступ к элементам управления в layouttemplate listview?
- 15. Доступ к элементам управления из другого потока
- 16. Как получить доступ к элементам управления формой Windows из элемента управления WPF?
- 17. Доступ к элементам управления пользовательского интерфейса из другого потока
- 18. Как получить доступ к элементам управления telerik из радиолокатора telerik
- 19. Доступ к элементам управления из класса реализации
- 20. Доступ к элементам управления страницы из отдельного класса
- 21. Доступ элементы пользовательского элемента управления
- 22. Доступ к элементам управления пользователя от родителя
- 23. .net - Доступ к глобальным переменным страниц из пользовательского элемента управления
- 24. Обновление главной страницы из пользовательского элемента управления
- 25. Доступ управления на странице с главной страницы из пользовательского элемента управления
- 26. Доступ пользовательского элемента управления ASP.Net
- 27. как получить путь URL страницы из пользовательского элемента управления
- 28. Доступ к элементам управления из разных форм
- 29. Как получить доступ к элементам управления winform из другого потока?
- 30. Как получить доступ к элементам управления адаптерами из активности?
На самом деле вы этого не делаете - на самом деле вы этого не делаете ... Я согласен с тем, что есть причины, по которым вы можете захотеть (были там, сделали это), но в корне это анти-шаблон - пользовательский элемент управления должен работать изолированно , если данные его потребностей вам нужно передать, если это нужно, чтобы повлиять на вещи вокруг него, то это должно привести к событиям. У вас также есть больше шансов получить что-то, что можно протестировать изолированно. Есть очень мало абсолютов, поэтому ваш прецедент может быть полностью оправданным ... но я бы хотел внимательно изучить, чтобы убедиться. – Murph