ASP.Net用户控制事件冒泡(C#)
非常感谢提前。我已经完成了我的尽职调查并进行了2天的研究,但似乎无法将我的想法包括在线教程描述的内容中。ASP.Net用户控制事件冒泡(C#)
情况:铅程序员ups和退出。公司老板知道我在一边做了一些(新手)VB.NET,并要求我在他的Intranet应用程序上的两个自定义用户控件之间连接功能(用C#写的)。回答专家的小考虑 - 我很流利在Visual Studio中...但仍然在学习C#)。
这里是控制一个简单的描述,但希望足以让我们朝着正确的方向:
UserControl_1包含多个了LinkButton,点击后,应该改变SelectParameter的价值正在使用中UserControl_2一个ObjectDataSource :
<asp:LinkButton ID="OpenBtn1" runat="server" Text="Show Open Requests" />
<asp:LinkButton ID="ClosedBtn1" runat="server" Text="Show Closed Requests" />
UserControl_2(GridView控件与数据源):
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetDataBy_Status"
TypeName="adhoc_TblAdptrs.adhoc_TblAdptr">
<SelectParameters>
<asp:Parameter DefaultValue="All" Name="status" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:GridView1 ID="GridView1" runat="server" DataSourceID="ObjectDataSource1" />
想我请将新的默认值传递给UserControl_2中的ObjectDataSource的SelectParameter。我期待着来自专业人士的个性化解释!您的帮助非常大,非常感谢!
我会暴露在UserControl2的属性,将依次设置参数值
public string ParamValue { get; set; }
protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e) {
if (ParamValue.Length > 0){
e.InputParameters["status"] = ParamValue;
}
}
此外,在页面创建将设置属性在控制公共方法
public void SetParamValue(string Value){
UserControl_2.ParamValue = Value;
}
从这里,在linkbutton点击事件中,您可以使用页面的方法设置公共属性:
void OpenBtn1_Click(Object sender, EventArgs e){
((YourPageClassHere)this.Page).SetParamValue("Open");
}
此方法将完成工作,但会将控件与linkbutton耦合到此特定页面。
如果你想删除的连接,那么你可以实现与方法的接口
public interface IParameterValuePage{
public void SetParamValue(string Value)
}
然后在你的页面,你会实现它和
控制页面做的代码进行检查void OpenBtn1_Click(Object sender, EventArgs e){
if (this.Page is IParameterValuePage){
((IParameterValuePage)this.Page).SetParamValue("Open");
}
else{
throw new Exception("Page must implement IParameterValuePage");
}
}
+1。我同意这个答案。再加上一个其他的考虑..我不知道是否两个用户控件可以合并成一个?他们似乎紧紧地联系在一起...... – 2010-02-02 19:11:11
我认为同样的事情,直到我发现在他的网站中的不同地方使用相同的控制,在那里连接链接按钮是没有意义的。 – Daniel 2010-02-02 19:24:28
Russ - 我明白你的建议到目前为止,但是......我不需要一种方式来将UserControl_1中的linkbutton的click事件“冒泡”到页面,这样页面上的一个函数就可以改变参数了吗? (我问这是因为如果UserControl_1用于UserControl_2中的gridview/ObjectDataSource不存在的页面,是不是会抛出错误?) – Daniel 2010-02-02 19:38:43
不要敲木工。这是一项有用的技能,您可以通过它赚钱。 – 2010-02-02 18:37:42
木工很酷! – JonH 2010-02-02 18:41:31