2009-11-19 2 views
0

У меня есть пользовательский элемент управления, называемый корзиной покупок. , который я использовал в главной странице. Я хочу получить значение текстового поля с дочерней страницы в пользовательский элемент управления. Можно ли получить доступ к управлению с дочерней страницы в «Пользовательском пользовательском контроле», который находится на главной странице?Как получить экземпляр элемента управления .net, который находится на дочерней странице с пользовательского элемента управления на главной странице

+0

Вы бы хотели рассмотреть возможность размещения части вашего кода. – Saar

ответ

0

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

Вы можете использовать общедоступное свойство на своей главной странице, которое предоставляет текстовое свойство пользовательского элемента управления.

public string ShoppingCartText { 
    get { return ((TextBox)this.ShoppingCart.FindControl("TextBox1")).Text; } 
    set { ((TextBox)this.ShoppingCart.FindControl("TextBox1")).Text = value; } 
} 

Затем с вашей страницы содержимого вы можете установить значение текстового поля. Вы можете получить доступ к свойствам главной страницы с страницы содержимого через свойство Page.Master.

Master.ShoppingCartText = "value" 
0

То, что я сделал, это доступ к управлению главной страницей через публичную функцию в коде позади.

Так в коде позади на главной странице, я хотел бы объявить что-то вроде:

public string getTextBoxValue() 
{ 
    return TextBox.Text; 
} 
+0

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

0

Вы можете рекурсии по дереву управления, чтобы найти какой-либо контроль в странице.

Вот несколько методов расширения, введите этот код в файл класса в своем решении.

public static class ControlExtensions 
{ 
     public static IEnumerable<Control> FindAllControls(this Control control) 
     { 
      yield return control; 

      foreach (Control child in control.Controls) 
       foreach (Control all in child.FindAllControls())  
        yield return all; 
     } 

     public static Control FindControlRecursive(this Control control, string id) 
     { 
      var controls = from c in control.FindAllControls() 
          where c.ID == id 
          select c; 

      if (controls.Count() == 1) 
       return controls.First(); 

      return null; 
     } 
    } 

Тогда используйте как это в своем пользовательском контроле.

TextBox whatYoureLookingFor = this.FindControlRecursive("theId") as TextBox; 

if(null != whatYoureLookingFor) 
    // whatever 
Смежные вопросы

 Смежные вопросы