0

我想创建一个用于检索和过滤数据集的用户控件。我遇到的问题是要填充的控件不在用户控件中,而是在用户控件所在的主页上。这样做的原因是要填充的控件在每个页面上都不同。

如果我能得到一些帮助来解决以下简化的问题,我可能会解决更大的问题:

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

我想要做的是通过单击用户控件上的按钮在主页上设置标签。我遇到的问题是用户控件回发发生在主页之后。

谢谢!

4

2 回答 2

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;
        }
    }
于 2013-07-04T09:49:35.077 回答
0
  1. 在用户控件中创建自定义事件
  2. 在用户控件中创建一个属性
  3. 单击按钮时触发事件并设置属性值
  4. 在用户控件的事件处理程序中访问主页中的属性
于 2013-07-04T09:39:12.450 回答