用户控件
来源:互联网 发布:数据分析师笔试题目 编辑:程序博客网 时间:2024/05/01 22:42
一、需基本掌握
1. 概述
a) 与普通控件的比较
b) 优点
2. 创建及使用用户控件
a) 创建
b) 添加至网页上
c) 制作博客导航条
3. 设置用户控件
a) 页面上访问用户控件的数据
b) 访问用户控件中的属性
c) 用户控件中访问页面中的控件
二、了解用户控件
用户控件是一种复合控件,工作原理非常类似于 ASP.NET 网页 - 您可以向用户控件添加现有的 Web 服务器控件和标记,并定义控件的属性和方法。然后可以将控件嵌入 ASP.NET 网页中充当一个单元。
三、页面上访问用户控件中的数据
方法一:
使用用户控件的FindControl方法,找到用户控件中的控件,进一步取得其数据(不需要在控件中处理,但是需要知道用户控件中要使用的控件的ID)
-- 举例
protected void Button1_Click(object sender, EventArgs e)
{
#region
DropDownList ddl = this.city1.FindControl("DropDownList1") as DropDownList ;
if (ddl != null)
this.Label1.Text = "省份:" + ddl.SelectedItem.Text + "(" + ddl.SelectedValue + ");";
ddl = this.city1.FindControl("DropDownList2") as DropDownList;
if (ddl != null)
this.Label1.Text += "城市:" + ddl.SelectedItem.Text + "(" + ddl.SelectedValue + ");";
#endregion
}
用户控件 三、方法一、二的图片
为控件增加属性(方法),使用该属性访问用户控件中的数据(在目标页面中使用时,简单,但是不够灵活)
-- 举例
用户控件中的代码
public string ProvinceCity
{get
{
return this.DropDownList1.SelectedItem.Text +
"(" +
this.DropDownList1.SelectedValue +
");" +
this.DropDownList2.SelectedItem.Text +
"(" +
this.DropDownList2.SelectedValue +
")";
}
}
页面中的代码
protected void Button1_Click(object sender, EventArgs e){
this.Label1.Text = this.city1.ProvinceCity;
}
四、用户控件中访问页面中的控件
方法一:
在用户控件中使用Parent属性找到页面,再通过FindControl方法找到要访问的控件
--举例
用户控件中的代码
protected void Button1_Click(object sender, EventArgs e)
{
Label lbl = this.Parent.FindControl("Label1") as Label;//Parent是用户控件的页面
lbl.Text = this.DropDownList2.SelectedItem.Text;
}
为用户控件添加事件,在页面中处理事件,进而实现在控件中访问页面中的控件
举例:
用户控件中的代码
--public delegate void CitySelectHandler(object sender,string selectCity);//委托
-- public event CitySelectHandler OnCitySelect;//事件--protected void Button1_Click(object sender, EventArgs e)
{
if (OnCitySelect != null)
{
OnCitySelect(this, this.DropDownList2.SelectedItem.Text);//方法
}
}
下边是页面中的代码
protected void Page_Load(object sender, EventArgs e)
{
this.select1.OnCitySelect += new CitySelectHandler(select1_OnCitySelect);
}
void select1_OnCitySelect(object sender, string selectCity)
{
this.Response.Write(selectCity);
}