用户控件问题:Aspx页面的Page_Load中无法获取通过静态添加的用户控件的属性值?
ascx:
public string ddlProvinceSelectText
{
get
{
return ddlProvince.SelectedItem.Text;
}
set
{
ddlProvince.SelectedItem.Text = value;
}
}
ddlProvince:一个DropDownList控件
aspx:
前端代码:
<uc1:AreaListl ID= "AreaListl1 " runat= "server " ddlCityAutoPostBack= "true " />
后台代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
AreaList1.ddlProvinceSelectText = "江西省 ";
}
}
报错:
未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
源错误:
行 146: {
行 147:
行 148: ddlProvince.SelectedItem.Text = value;
行 149: }
行 150: }
源文件: e:\Cti_Soft\Cti_Web\UserControl\AreaListl.ascx.cs 行: 148
注:属性设置肯定是正确的,因为我在页面中放一个BUTTON,将Page_Load中的代码放在Button_Click中则一切正常!
------解决方案--------------------public class youraspxpage:page
{
//加上下句
protected AreaListl AreaList1;
.. page_load(... )
{}
}
------解决方案--------------------AreaList1 = (UserControl)Page.FindControl( "AreaList1 ");
------解决方案--------------------没有定义AreaList1 ?
也有可能你的用户控件没写对;
------解决方案--------------------这里应该在.cs中申明一次你的控件..
protected AreaListl AreaList1;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
AreaList1.ddlProvinceSelectText = "江西省 ";
}
}
------解决方案--------------------