加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET DataSource控件“没有命名容器”异常

发布时间:2020-12-16 07:08:11 所属栏目:asp.Net 来源:网络整理
导读:我一直在我的代码中得到这个例外,并想知道是否有人可以帮助我. 我有一个绑定到ObjectDataSource的Repeater控件,并且转发器的itemtemplate包含一个用户控件(ASCX).该用户控件又包含几个其他控件,主要是与ObjectDataSource关联的GridView. 在此设置中初始使用
我一直在我的代码中得到这个例外,并想知道是否有人可以帮助我.

我有一个绑定到ObjectDataSource的Repeater控件,并且转发器的itemtemplate包含一个用户控件(ASCX).该用户控件又包含几个其他控件,主要是与ObjectDataSource关联的GridView.

在此设置中初始使用控件时,一切都很好 – 数据显示正常.但是,当我更改过滤器选项(转发器外部的下拉菜单),然后重新绑定Repeater时,我得到异常:

ObjectDataSource控件’expDataSource’没有命名容器.确保在调用DataBind之前将控件添加到页面中.“
在System.Web.UI.WebControls.DataBoundControlHelper.FindControl(控件控件,字符串controlID)


在System.Web.UI.WebControls.ObjectDataSource.LoadCompleteEventHandler(Object sender,EventArgs e)

我不确定问题是什么 – 我在一些地方读过,将数据源移到ASCX控件之外可能会有所帮助 – 这没什么用. objectdatasource看起来结构合理,正如我所说,它是第一次(仅).

我在堆栈跟踪中注意到,当发生LoadComplete()之后ASP.NET正在调用FindControl()时发生这种情况.如果我单步执行代码,似乎所有代码都在执行之前完成执行,因此它是所有“系统”代码.

为什么ASP.NET无法在LoadComplete处理程序中找到此数据源控件?

谢谢!

其他说明:

>此错误每隔一次发生.因此,第一次正确加载数据时,第二次刷新会因此错误而失败.再次单击“加载”,它可以工作(第三次).
>在失败的时候,看起来在ASCX控件中调用了两次“Page_Load”.所以模式是:

>工作模式:

>父页面上的Page_Load
> ASCX上的Page_Load
>数据加载正常

>失败模式:

>父页面上的Page_Load
> ASCX上的Page_Load
> ASCX上的Page_Load
>例外

这一切都发生在对“Repeater.DataBind()”的调用中,但它的行为会有所不同,具体取决于它是否已被绑定(显然).

更多说明:

真奇怪的行为.我从ObjectDataSource的底部删除了SelectParameters列表,突然之间,该页面没有拒绝ObjectDataSource,因为没有NamingContainer.当然,没有这些参数,数据绑定实际上不会起作用……我可以在代码中添加它们,但为什么它会重要?

解决方法

找到一个奇怪的解决方案,我将发布,我们可以讨论,也许找出为什么这个修复它.

在我的页面上,我有以下结构(稍微解释标签):

DropDownFilter

中继器

UserControl X.

ObjectDataSource控件

ControlParameters引用DropDownFilter

结束ObjectDataSource

最终用户控件X.

结束中继器

结束页面

正如您所看到的,在Repeater中,ItemTemplate是用户控件,而后者又拥有带有ControlParameters的“有罪”ObjectDataSource.这些控制参数在引用的父页面上具有DropDownList过滤器的名称(所以基本上,如果将此控件添加到任何其他页面,如果它找不到具有正确名称的控件,它当然会失败).

因此,当我通过并将所有ControlParameters更改为Parameters(删除对该DropDownList控件的引用)时,现在我不再收到错误.

我可以假设的是,这个数据源在父页面上引用了一个控件这一事实意味着它很难被添加回DataBind()上的页面控件集.如果它根本失败的话,你会认为它会第一次失败,所以这仍然是一个谜.

有什么想法吗?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读