这个问题我已经提过两次了,可是始终没有解决,请各位高手帮帮忙。急啊!!!!
在我的程序中我通过一个Swich语句根据一个dropdownlist中所选择的项目,动态加载不同的用户控件,代码如下:
switch (SelectDrdownLst.SelectedItem.Value)
{
case "全部危险品企业浏览" :
HolderControl.Controls.Clear();
危险品企业信息浏览 ctlControl1 = (危险品企业信息浏览)LoadControl("危险品企业信息浏览.ascx");
HolderControl.Controls.Add(ctlControl1);
break;
case "具体危险品企业信息" :
HolderControl.Controls.Clear();
危险品企业信息查询 ctlControl2 = (危险品企业信息查询)LoadControl("危险品企业信息查询.ascx");
HolderControl.Controls.Add(ctlControl2);
break;
case "危险品企业人员信息" :
HolderControl.Controls.Clear();
危险品企业人员信息查询 ctlControl3 = (危险品企业人员信息查询)LoadControl("危险品企业人员信息查询.ascx");
HolderControl.Controls.Add(ctlControl3);
break;
当我运行程序时,如果我首先在SelectDrdownLst这个下拉列表框中选择任何一个选项,LoadControl()都会正常执行,可是当我改变SelectDrdownLst的SelectedItem时,LoadControl()就会发生执行错误。
例如:我首相在SelectedItem中选择“全部危险品企业浏览”,那么危险品企业信息浏览.ascx这个用户控件被正常加载,可是当我改变SelectedItem中的SelectedItem为”危险品企业人员信息“时,就会发身错误,“危险品企业人员信息查询.ascx”,无法被加载,并且提示错误是:
“System.InvalidCastException: 指定的转换无效
堆栈跟踪:
[InvalidCastException: 指定的转换无效。]
System.Web.UI.WebControls.WebControl.LoadViewState(Object savedState) +24
System.Web.UI.WebControls.Label.LoadViewState(Object savedState) +13
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +125
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +311
System.Web.UI.Control.LoadViewStateRecursive(Object savedState) +311
System.Web.UI.Control.AddedControl(Control control, Int32 index) +291
System.Web.UI.ControlCollection.Add(Control child) +153
ghxg.危险品企业作业人员培训查询.Page_Load(Object sender, EventArgs e) +590
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +29
System.Web.UI.Control.LoadRecursive() +92
System.Web.UI.Control.LoadRecursive() +92
System.Web.UI.Control.LoadRecursive() +92
System.Web.UI.Page.ProcessRequestMain() +724
如果我首相在SelectedItem中选择“危险品企业人员信息”,那么“危险品企业人员信息查询.ascx”这个用户控件就会被正常加载,无任何错误。
当我把“危险品企业信息浏览.ascx”,“危险品企业信息查询.ascx”,“危险品企业人员信息查询.ascx”这三个用户控件的Document对象的EnableViewState属性改为false时就不会发生上述错误,可是,用户控件的一些函数却不会正常执行,例如用户控件中的DataGrid的编辑命令的响应函数,如果我点击DataGrid的第二页的第一行想要编辑他,但是页面刷新后,总是默认为第一页的第一行进行编辑。
不知道我说没说明白。
这个问题困扰了我很长时间了,请各位大侠帮帮忙。