在回发时将数据从用户控件发送到主页面

时间:2013-07-04 08:40:17

标签: asp.net user-controls

我想创建一个用于检索和过滤数据集的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上的按钮在主页面上设置标签。我遇到的问题是用户控件回发发生在主页之后。

谢谢!

2 个答案:

答案 0 :(得分:0)

  1. 在用户控件中创建自定义事件
  2. 在usercontrol中创建属性
  3. 点击按钮时触发事件&amp;设置属性值
  4. 在用户控件的eventhandler
  5. 中访问主页面中的属性

答案 1 :(得分: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;
        }
    }