【发布时间】:2013-03-04 08:09:21
【问题描述】:
这个有点……奇怪。基本上我有一个使用 ASP.NET 动态数据构建的表单,它将利用几个自定义字段模板。
我刚刚在 FormView 中添加了另一个字段,它有自己的自定义模板,并且表单会无缘无故地加载该控件两次。更糟糕的是,第一次加载模板时,Row 还没有准备好,我收到错误消息:
Eval()、XPath() 和 Bind() 等数据绑定方法只能在数据绑定控件的上下文中使用
我正在访问 LinqDataSource OnSelected 事件中的 Row 变量以获取子对象...
现在是奇怪的部分:如果我稍微重新排序字段,导致问题的字段不再加载两次。
有什么想法吗?
编辑:我注意到 Page_Load 在第一次加载时被调用(如果你尝试使用它,当 Row 抛出异常时)但第二次没有被调用。如果这有帮助...
现在只通过捕获和忽略异常来管理它,但仍然有点担心如果我找不到真正的原因会破坏。
编辑 2:我已将问题追溯到递归地使用 FindControl 来查找页面上的其他控件。显然 FindControl 可以导致页面生命周期事件(至少到 page_load)触发......并且这发生在该页面“应该”加载之前,因此它的动态数据“东西”还没有准备好。
【问题讨论】:
-
我认为,您正在做的是,您在页面上有 formview,并且 formview 绑定到 LinqDatasource,您有一些自定义/附加字段要填充到 formview 中,以及何时要保存/更新记录,你需要自定义/附加字段值??????
-
你能告诉我你的代码,你是如何添加自定义模板的吗?
-
主页面有一个FormView,动态数据模板也包含FormViews,有自己的LinqDataSource。我没有直接添加任何自定义模板,它们是由 ASP.NET 动态数据功能添加的……我只是在元数据类上设置 UIHint……发布的代码有点复杂,但如果我需要我今天晚些时候可能会。
-
您正在做的是,您正在添加自定义字段并绑定它们会产生问题,您必须以其他方式添加这些自定义字段,请检查我的答案
-
你解决了这个问题............
标签: asp.net asp.net-dynamic-data