2009年6月16日 星期二

C# (ascx) usercontrol互相傳值

話說兩個不相信任的政黨..要互相移交政權..要好好的傳地下去..是有點給它難..
話說兩個不相關的usercontrol要互相丟值接值..感覺起來也是不怎麼好用..

google一下..可以發現有人提供一些方法..像interface這樣很正統的解決方法..不過.. 真的有點給它努力認真研究.. 才可以給它懂(我就是這樣懂的....) 如果看不懂或是想偷懶..那有啥方法呢?..有低..session..application都可以解決..

textbox.ascx..這一個usercontrol放一個textbox和一個button
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="textbox.ascx.cs" Inherits="usercontrol_textbox" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />

textbox.ascx.cs
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
HttpContext.Current.Items["textbox"] = TextBox1.Text;
}

label.ascx..這一個usercontrol放一個label
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="label.ascx.cs" Inherits="usercontrol_label" %>
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>

label.ascx.cs
protected void Page_Load(object sender, EventArgs e)
{

}
void Page_PreRender(object sender, EventArgs e)
{
Label1.Text = (string)HttpContext.Current.Items["textbox"];
}

CurrentItems.aspx..這裡把兩個usercontrol放進來..

<form id="form1" runat="server">
<div>
<uc1:textbox ID="textbox1" runat="server" />
<br />
<uc2:label ID="label1" runat="server" />
</div>
</form>

執行就可以抓到值啦
這裡就是用HttpContext.Current.Items["abc"]這東西..

參考:
http://msdn2.microsoft.com/zh-tw/library/system.web.httpcontext.items.aspx

沒有留言:

張貼留言