2013-07-04 3 views
0

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

Если я мог бы получить некоторую помощь в решении следующей упрощенной проблемы, я, вероятно, буду на моем пути, чтобы решить большую проблему:

<body> 
    <form id="form1" runat="server"> 
    <div> 
    <uc1:uc1 ID="uc1" runat="server" /> 
    <asp:Label ID="lbl" runat="server"></asp:Label> 
    </div> 
    </form> 
</body> 

То, что я хочу сделать, это установить метку на главной странице по нажав кнопку на usercontrol. Проблема, с которой я сталкиваюсь, заключается в том, что postback usercontrol происходит после главной страницы.

Спасибо!

+0

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

+0

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

ответ

0

Мне удалось решить это, вызвав Parent.Page. Я также реализовал интерфейс, чтобы я мог вызывать методы разных страниц из пользовательского элемента управления. Не уверен, что это хорошее решение, но он будет делать:

interface IFilter 
    { 
     void SetLabel(string text); 
    } 

public partial class uc : System.Web.UI.UserControl 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     protected void btn_Click(object sender, EventArgs e) 
     { 
      ((IFilter)Parent.Page).SetLabel("changed"); 
     } 
    } 

public partial class _Default : System.Web.UI.Page , IFilter 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!Page.IsPostBack) 
      { 

      } 
     } 

     public void SetLabel(string text) 
     { 
      lbl.Text = text; 
     } 
    } 
0
  1. создать пользовательское событие в пользовательском элементе управления
  2. создать свойство в UserControl
  3. огня событие, когда кнопка нажата & установить значение свойства
  4. доступа собственность на главной странице в пользователь контрольного обработчик событий
+0

Спасибо, я решил это, используя другой подход. – Skalis

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