日期:2014-05-18  浏览次数:20584 次

同一个页面里,两个用户控件间如何传值,并刷新呢
同一个页面里,两个用户控件间如何传值,并刷新呢

------解决方案--------------------
探讨
可以在两个用户空间中分别添加连个public属性和方法,一个用来接受传值,另一个用来刷新

------解决方案--------------------
viewstate就可或通过js传递
------解决方案--------------------
方法很多,GET SET是可以的,或者是存放在SESSION里等
------解决方案--------------------
两个用户控件A,B在一个页面里,控件B的要通过A里面的变量来读取数据,问题是A的数据变化了,怎么告诉B并且B刷新数据呢

==========

你的需求太抽象了

到底 A 的数据怎么变化的? 用户客户端操作到底的变化,比如 Dropdownlist ?
------解决方案--------------------
直接在控件A里做个事件,然后在调用2者的页面写个方法处理这个事件刷新控件B
------解决方案--------------------
如果要传递参数的话,再写个事件参数类,事件里将参数一并传递过去
------解决方案--------------------
其中的一个用户控件中需要暴露一个接收值的公共属性。
------解决方案--------------------
例如GridView中的DataSoureID,就可以接收来自DataSource的响应ID值
------解决方案--------------------
一个User Control:UcA.ascx的网页上放有一个TextBox ID为TextBox1; 
  一个Page:PageA.aspx; 
  一个User Control:UcB.ascx的网页上放有一个Button ID为Button1和一个Label ID为Label1; 
  然后把UcA.ascx和UcB.ascx都拉至PageA.aspx上。 
  然后在UcA.ascx的TextBox1输入一个值,点UcB.ascx上的Button1,把TextBox1的值传至UcB.ascx的Label1上。

C# code
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        ((Button)UcB1.FindControl("Button1")).Click += new EventHandler(UcB1_Click);       
    }

    void UcB1_Click(object sender, EventArgs e)
    {

        TextBox TextBox1 = (TextBox)UcA1.FindControl("TextBox1");
        Label Label1 = (Label)UcB1.FindControl("Label1");
        Label1.Text = TextBox1.Text;
    }

------解决方案--------------------
一个User Control:UcA.ascx的网页上放有一个TextBox ID为TextBox1; 
  一个Page:PageA.aspx; 
  一个User Control:UcB.ascx的网页上放有一个Button ID为Button1和一个Label ID为Label1; 
  然后把UcA.ascx和UcB.ascx都拉至PageA.aspx上。 
  然后在UcA.ascx的TextBox1输入一个值,点UcB.ascx上的Button1,把TextBox1的值传至UcB.ascx的Label1上。

C# code
    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        ((Button)UcB1.FindControl("Button1")).Click += new EventHandler(UcB1_Click);       
    }

    void UcB1_Click(object sender, EventArgs e)
    {

        TextBox TextBox1 = (TextBox)UcA1.FindControl("TextBox1");
        Label Label1 = (Label)UcB1.FindControl("Label1");
        Label1.Text = TextBox1.Text;
    }