当前位置:编程学习 > C#/ASP.NET >>

用户控件中BUTTON的CLICK事件中 如何对该用户控件所在的主页面中控件赋值???

在用户控件中有一个Listbok 、一个button
当选中Listbox中的一项后 点击BUTTON 实现对所在父页面中一个Labelfuzhi

如何实现??
请高手给提示  最好有代码 多谢 --------------------编程问答-------------------- 楼主自己读一遍,看看通顺不? --------------------编程问答-------------------- 比较正规的做法是给用户控件加一个事件,比如叫BUTTONClick,当点击这个BUTTON的时候触发这个事件,在页面里面 加这个BUTTONClick委托方法,在这个委托方法中控件赋值。 --------------------编程问答-------------------- 用CMIC的方法,发现在这个事件里给控件赋值,控件值没有任何变化,不知是为什么,事件是正常运作的 --------------------编程问答-------------------- 如果是我,我会用委托 --------------------编程问答-------------------- 如果是我,我会用委托 --------------------编程问答-------------------- 父页面:

<asp:Label ID="Label1" runat="server" ></asp: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>
--------------------编程问答-------------------- Label xx = Master.FindControl("Labelfuzhi") as Label;
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)去赋值! --------------------编程问答--------------------
引用 2 楼 cmic 的回复:
比较正规的做法是给用户控件加一个事件,比如叫BUTTONClick,当点击这个BUTTON的时候触发这个事件,在页面里面   加这个BUTTONClick委托方法,在这个委托方法中控件赋值。


是这样的!

用户控件是什么,就好象是一个插件,你可以插别的东西完成同样的功能。因此,如果你用用户控件来实现灵活的插件,那么页面就不应该想当然地以为用户控件里边有什么控件,而是通过用户控件的接口来操作。

我们为用户控件设计一个接口,例如:
public inte易做图ce IMyControlABC
{
    public event EventHandler<EventArgs> 请求打易做图易做图;
    public string 展现的内容 { set; get; }
}


用户控件实现这个接口,而页面则注册这个事件处理程序。当按了按钮(或者其它什么触发方法触发了它)就用事件通知页面,而页面通过设置那个属性来通知用户控件显示内容(至于内容用什么控件,则不用想当然)。 --------------------编程问答-------------------- 当你写了用户控件,作为一个相对独立的东西,很可能有别人喜欢重新设计用户控件。即使里边使用的控件类型以及ID都不改变(即使我们如此委屈用户控件不可改变这些设计),也不能保证页面使用FindControl可以找到里边的控件的。
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,