2013-07-04 126 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上的按钮。我遇到的问题是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. 在用户控件创建属性
  3. 火当按钮被点击&设置属性值
  4. 访问用户控制的主页面属性的事件eventhandler
+0

谢谢,我用另一种方法解决了它。 – Skalis