用户控件中BUTTON的CLICK事件中 如何对该用户控件所在的主页面中控件赋值???
在用户控件中有一个Listbok 、一个button当选中Listbox中的一项后 点击BUTTON 实现对所在父页面中一个Labelfuzhi
如何实现??
请高手给提示 最好有代码 多谢 --------------------编程问答-------------------- 楼主自己读一遍,看看通顺不? --------------------编程问答-------------------- 比较正规的做法是给用户控件加一个事件,比如叫BUTTONClick,当点击这个BUTTON的时候触发这个事件,在页面里面 加这个BUTTONClick委托方法,在这个委托方法中控件赋值。 --------------------编程问答-------------------- 用CMIC的方法,发现在这个事件里给控件赋值,控件值没有任何变化,不知是为什么,事件是正常运作的 --------------------编程问答-------------------- 如果是我,我会用委托 --------------------编程问答-------------------- 如果是我,我会用委托 --------------------编程问答-------------------- 父页面:
<asp:Label ID="Label1" runat="server" ></asp:Label>
用户控件:
--------------------编程问答-------------------- Label xx = Master.FindControl("Labelfuzhi") as Label;
<asp:ListBox ID="ListBox1" runat="server">
<asp:ListItem Selected="True">选项一</asp:ListItem>
<asp:ListItem>选项二</asp:ListItem>
<asp:ListItem>选项三</asp:ListItem>
</asp:ListBox>
<asp:Button ID="Button1" runat="server" Text="按钮" OnClick="Button1_Click" />
<script runat="server">
void Button1_Click(object sender, EventArgs e)
{
Label label = this.Page.FindControl("Label1") as Label;
if (label != null)
label.Text = "当前选项是" + ListBox1.SelectedItem.Text;
}
</script>
xx.Text = "what you want"; --------------------编程问答-------------------- 第一步:用户控件中
public deletegate void m()
public event m q;
public string Text
{
get{return TextBox1.Text;}
}
protecte void Button1_Click(object sender,EventArgs e)
{
//这里的意思就是你点击用户控件的按钮时触发的事件
if(q==null)
{
q()
}
}
第二步:你在页面中重写onInit事件
Uc.q+=new 用户控件类.m(aa) //此处的aa为你自定义的方法;Uc是页面中的用户控件id
然后定义aa方法
public void aa()
{
Label1.Text=Uc.Text;
} --------------------编程问答-------------------- 我试过了。赋值了。但是空的。 --------------------编程问答-------------------- 可以在后台程序中找到本窗口的父窗体,用FindControl(ID)去赋值! --------------------编程问答--------------------
是这样的!
用户控件是什么,就好象是一个插件,你可以插别的东西完成同样的功能。因此,如果你用用户控件来实现灵活的插件,那么页面就不应该想当然地以为用户控件里边有什么控件,而是通过用户控件的接口来操作。
我们为用户控件设计一个接口,例如:
public inte易做图ce IMyControlABC
{
public event EventHandler<EventArgs> 请求打易做图易做图;
public string 展现的内容 { set; get; }
}
用户控件实现这个接口,而页面则注册这个事件处理程序。当按了按钮(或者其它什么触发方法触发了它)就用事件通知页面,而页面通过设置那个属性来通知用户控件显示内容(至于内容用什么控件,则不用想当然)。 --------------------编程问答-------------------- 当你写了用户控件,作为一个相对独立的东西,很可能有别人喜欢重新设计用户控件。即使里边使用的控件类型以及ID都不改变(即使我们如此委屈用户控件不可改变这些设计),也不能保证页面使用FindControl可以找到里边的控件的。
补充:.NET技术 , ASP.NET