【问题标题】:Sending data from usercontrol to main page on postback在回发时将数据从用户控件发送到主页
【发布时间】:2013-07-04 08:40:16
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

  • 请在后面的代码中添加更多代码,我不明白你想从哪里发送到哪里。
  • 嗯,这就是问题所在。我不知道如何解决它,所以基本上没有代码。我拥有的唯一代码是用户控件中的按钮事件。但是我不知道如何从那里设置主页的标签。

标签: asp.net user-controls


【解决方案1】:

我设法通过调用 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;
        }
    }

【讨论】:

    【解决方案2】:
    1. 在用户控件中创建自定义事件
    2. 在用户控件中创建一个属性
    3. 点击按钮时触发事件并设置属性值
    4. 在用户控件的事件处理程序中访问主页中的属性

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-25
      • 2011-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      相关资源
      最近更新 更多