我需要将用户控件的onload事件中的值传递给父页面的onload事件。我在stackoverflow上找到了这个代码,但我似乎无法让它工作/适应它:
Public Property SomeValue() As String
Get
Return textbox1.Text
End Get
End Property
我需要传递的值是来自数据库的单个int。
conn.Open();
reader = comm.ExecuteReader();
if (reader.Read())
{
shoppingCartHeadID = Convert.ToInt32(reader["shoppingCartHeadID"]);
hfShoppingCartHeadID.Value = shoppingCartHeadID.ToString();
}
reader.Close();
答案 0 :(得分:1)
你真的不需要传递任何东西。只需在用户控件上创建一个属性,然后从页面访问它:
protected void Page_Load(object sender, EventArgs e)
{
string userControlValue = UserControl.UserControlValue;
}
答案 1 :(得分:0)
此代码:
Public Property SomeValue() As String
Get
Return textbox1.Text
End Get
End Property
在C#中看起来像这样:
public String SomeValue {
get{ return textbox1.text}
}
我认为通过子用户控件应该设置属性的方式,父用户控件应该读取什么。
//child
public string DatatoShare{get;set;}
protected override Onload()
{
DatatoShare = "Whatever you want"
base.Onload()
}
//parent
private ChildUserControl child;
public string NeedChildsData()
{
return child.DatatoShare
}
答案 2 :(得分:0)
这不是很好的方式,但如果你真的知道你在那里做什么,你可以尝试一下属性
可能是这样的:
//child uc class
...
public string MyValue { get; private set; }
//... loaded (...)
{
...
this.MyValue = "Value";
}
// Parent uc class
//... loaded (...)
{
...
string childValue = this.ucChildControl.MyValue;
}
答案 3 :(得分:0)
最后,我选择创建一个单独的公共类来调用和控制购物车。事实证明,这是更有效和更清晰的代码!
感谢您的建议。