使用web自定义控件的时候,在前台页面是可以调用web控件的属性的,在web前台页面中可以直接将属性传过去,这个有什么用呢?可以用在一些投票系统。比如说你的投票系统吧,可以设定投票ID,然后传过去,可以显示不同的投票内容这样比较灵活不用增加一个投票内容修改一次程序的。
下面是程序的代码
WebUserControl代码:(前台也没什么玩意就是两个文本框)
private int _nameID=0;
public int NameID
{
get
{
return _nameID;
}
set
{
_nameID = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (_nameID == 0)
{
TextBox1.Text = "Hello";
TextBox2.Text = "World";
}
else
{
TextBox2.Text = "World" + _nameID.ToString();
TextBox1.Text = "Hello" + _nameID.ToString();
}
}
Web前台页面:
<div>
<uc1:WebUserControl ID="WebUserControl1" NameID="1" runat="server" />
<uc1:WebUserControl ID="WebUserControl2" runat="server" />
<uc1:WebUserControl ID="WebUserControl3" runat="server" />
</div>
后台代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
WebUserControl3.NameID = 5;
}
}
说明:
1. WebUserControl1通过前台属性直接指定的NameID属性值;
2. WebUserControl2没有指定,则是默认值0;
3. WebUserControl3通过后台代码指定的。
顺便说一下,动态添加用户自定义控件(*.ascx) 的方法
在aspx页面中增加几个用户自定义控件的引用
<%@ Register Src="user1.ascx" TagName="user1" TagPrefix="uc1" %>
<%@ Register Src="user2.ascx" TagName="user2" TagPrefix="uc2" %>
//user1,user2分别是用户自定义控件注册的TagName名称
if (CheckBox1.Checked)
{
user 1 c 1 = (user1)base.LoadControl("~/user1.ascx");
c1.ID = "User1";
c1.S_Lable = "User1:hello";
//S_Label是用户自定义控件中的一个属性
this.Panel1.Controls.Add(c1);
}
else
{
//只是调用用户自定义控件,不对其属性进行操作
this.Panel1.Controls.Add(base.LoadControl("~/user2.ascx"));
}
通过动态调用用户自定义控件并且向控件进行传值可是耗费了我不少珍贵的时间啊,如果感觉对您有用就顶一下,以示对我的鼓励和支持;如果没有什么作用就无所谓了,随你的便了,呵呵我不强求了!
测试环境:VS2005
有问题可以联系我:
MSN(E-mail):teng_s2000@126.com
QQ: 37210956
//this.Panel1.Controls.Add(base.LoadControl("~/user1.ascx"));