日期:2014-05-19  浏览次数:20508 次

用户控件问题: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 = "江西省 ";

}

}

------解决方案--------------------