例子:
在a.ascx里定义好一些控件,其中包括gridview,
在b.aspx里引用a.ascx文件,
能否做到点a.ascx上的控件按钮将数值传递到b.aspx的控件上??

解决方案 »

  1.   

    您需要在a.ascx.cs后台文件中,自定义属性和事件;
    类似这样:public string MyProperty
    {
    // get, set访问器
    }public event EventHandler ButtonClicked;
    protected void btn_Click(object sender, EventArgs e)
    {
        if(null != ButtonClicked)
        {
            ButtonClicked(this, new EventArgs());
        }
    }在b.aspx.cs的后台代码中,需要订阅用户控件的事件。
      

  2.   

    你可以把值作为参数或赋给session,然后在传过去。OK
      

  3.   

    方法太多了
      session 
      

  4.   


    public string MyProperty 

    // get, set访问器 

    这步我已写,但我是想点gridview时可以将值传到b.aspx上的控件上,可能会用到gridview的SelectedIndexChanged事件,如何订阅用户控件
      

  5.   

    我在a.ascx.cs中设置了
    public GridView GV
        {
            get { return this.GridView1; }
        }下面这句还用写吗?
    public event EventHandler ButtonClicked; 
    protected void btn_Click(object sender, EventArgs e) 

        if(null != ButtonClicked) 
        { 
            ButtonClicked(this, new EventArgs()); 
        } 
    } 我已实现点击gridview的数据时将值(用的是SelectedIndexChanged事件)传递给a.ascx页上的控件,现在想实现将值传给b.aspx的控件
      

  6.   


    我看大家许多人肯定没看清楚我的意思我要的是点a.ascx上的控件将值传给b.aspx上的控件,
    而不是点b.aspx上的控件去取a.ascx的控件值请大家看明白些
      

  7.   


    //用户控件后台
        public delegate void SetVal(string val);
        public event SetVal SetValEvent = null;
        protected void btn_UcControl_Click(object sender, EventArgs e)
        {
            if (SetValEvent != null)
            {
                SetValEvent("赋值");
            }
        }
    //用户控件前台
    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
    <asp:Button runat="server" Text="用户控件赋值"  ID="btn_UcControl" OnClick="btn_UcControl_Click"/>
    //aspx页面调用 前台
     <form id="form1" runat="server" action="Default2.aspx" method="post">
            <asp:TextBox runat="server" ID="txt_textbox"></asp:TextBox>
            <uc1:WebUserControl ID="WebUserControl1" runat="server" />
        </form>
    //aspx页面调用 后台
      protected void Page_Load(object sender, EventArgs e)
        {
            WebUserControl1.SetValEvent += new WebUserControl.SetVal(WebUserControl1_SetValEvent);
        }    void WebUserControl1_SetValEvent(string val)
        {
            this.txt_textbox.Text = val;
        }
    够清楚了吧