使用ascx目的就是为了提高某部分功能的重复利用,我简单通过源代码说一下对它的参数的输入和数出。
我们以省市区三级连动为例子。
vs2005下ascx页面的代码:


<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->




























ascx后台代码:


<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->publicpartialclassUserControl_ProvinceAndCityAndDistrict:System.Web.UI.UserControl
{
/////<summary>
/////选择区域的iD
/////</summary>
protectedstring_districtValue;
[Bindable(true),Category("Appearance"),DefaultValue("")]
publicstringdistrictValue
{
get{return_districtValue;}
set{_districtValue=value;}
}
protectedstring_cityValue;
[Bindable(true),Category("Appearance"),DefaultValue("")]
publicstringcityValue
{
get{return_cityValue;}
set{_cityValue=value;}
}
protectedstring_provinceValue;
[Bindable(true),Category("Appearance"),DefaultValue("")]
publicstringprovinceValue
{
get{return_provinceValue;}
set{_provinceValue=value;}
}
privatevoidsetValue()
{
if(_provinceValue!=string.Empty)
{
this.ddlProvince.SelectedItem.Text=_provinceValue;
}
if(_cityValue!=string.Empty)
{
this.ddlCity.SelectedItem.Text=_cityValue;
}
if(_districtValue!=string.Empty)
{
this.ddlDistrict.SelectedItem.Text=_districtValue;
}
}
publicstringgetValue()
{
returnthis.ddlProvince.SelectedItem.Text+","+ddlCity.SelectedItem.Text+","+ddlDistrict.SelectedItem.Text;
}
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!IsPostBack)
{
setProvince();
this.ddlProvince.SelectedIndex=0;
setCity(Convert.ToInt32(this.ddlProvince.SelectedValue));
this.ddlCity.SelectedIndex=0;
setDistrict(Convert.ToInt32(this.ddlCity.SelectedValue));
setValue();
}
}
privatevoidsetProvince()
{
CallCenter.BLL.sys_Provinceprovince=newCallCenter.BLL.sys_Province();
DataSetds=province.getProvinceList();
this.ddlProvince.DataSource=ds.Tables[0];
this.ddlProvince.DataValueField="provinceid";
this.ddlProvince.DataTextField="provincename";
this.ddlProvince.DataBind();
}
privatevoidsetCity(intprovinceId)
{
CallCenter.BLL.sys_Citycity=newCallCenter.BLL.sys_City();
DataSetds=city.getCityList(provinceId);
this.ddlCity.DataSource=ds.Tables[0];
this.ddlCity.DataValueField="cityid";
this.ddlCity.DataTextField="cityName";
this.ddlCity.DataBind();
}
privatevoidsetDistrict(intcityId)
{
CallCenter.BLL.sys_Districtdistrict=newCallCenter.BLL.sys_District();
DataSetds=district.getDistrictList(cityId);
this.ddlDistrict.DataSource=ds.Tables[0];
this.ddlDistrict.DataValueField="districtid";
this.ddlDistrict.DataTextField="districtname";
this.ddlDistrict.DataBind();
}
protectedvoidddlProvince_SelectedIndexChanged(objectsender,EventArgse)
{
setCity(Convert.ToInt32(this.ddlProvince.SelectedValue));
this.ddlCity.SelectedIndex=0;
setDistrict(Convert.ToInt32(this.ddlCity.SelectedValue));
}
protectedvoidddlCity_SelectedIndexChanged(objectsender,EventArgse)
{
setDistrict(Convert.ToInt32(this.ddlCity.SelectedValue));
}
}
使用aspx页面的后台调用部分代码:
如何传入参数,对于ascx的参数一般通过自定义页面属性来实现的。在ascx的页面我定义了几个属性
provincevalue,cityvalue,districtvalue,把你所需要传入的参数通过下面的方式给它就可以了,至于出入后你需要怎么处理你就自己操作了,上面有我的简单处理方式。


<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->string[]strAddress=ds.Tables[0].Rows[i]["value"].ToString().Split(',');
this.ProvinceAndCityAndDistrict1.provinceValue=strAddress[0];
this.ProvinceAndCityAndDistrict1.cityValue=strAddress[1];
this.ProvinceAndCityAndDistrict1.districtValue=strAddress[2];
从ascx获取输出的东西的话,我目前采用的是通过公共函数调用来实现的
比如在对aspx页面的信息进行保存的时候,我要获取到当前所选择的省市区信息,我是通过方法getValue()来获取返回的字符窜的,你可以根据自己的需要来定义适当的方法。
this.ProvinceAndCityAndDistrict1.getValue();
希望我通过简单的举例说明能够帮助大家对ascx的使用有个初步简单的了解。有好的方法相互交流,共同进步!