动态控制在错误的时间加载?

时间:2009-06-12 16:48:00

标签: asp.net asp.net-dynamic-data

这个有点......奇怪。基本上我有一个使用ASP.NET动态数据构建的表单,它将使用多个自定义字段模板。

我刚刚在FormView中添加了另一个字段,并使用了自己的自定义模板,并且表单正在加载该控件两次,原因并非明显。更糟糕的是,第一次加载模板时,Row尚未就绪,我收到错误消息:

数据绑定方法(如Eval(),XPath()和Bind()只能在数据绑定控件的上下文中使用

我正在访问LinqDataSource OnSelected事件中的Row变量以获取子对象...

现在对于奇怪的部分:如果我稍微重新排序字段,导致问题的那个不再被加载两次。

有什么想法吗?

编辑:我注意到第一次加载时会调用Page_Load(如果你尝试使用它会抛出异常),但第二次不会调用它。如果这有助于任何......

现在通过捕捉和忽略异常来管理它,但仍然有点担心如果我找不到真正的原因,事情就会破裂。

编辑2:我已经跟踪问题,以递归方式使用FindControl来查找页面上的其他控件。显然,FindControl可以导致页面生命周期事件(至少高达page_load)触发...这发生在该页面“应该”加载之前,因此它的动态数据“stuff”尚未准备就绪。

2 个答案:

答案 0 :(得分:0)

您不是指Page_LoadOnSelected中设置的内容,是吗?像你的行对象。 OnSelected是一个回发事件,发生在Page_Load之后。这是我唯一可以想到的,当行没有准备就可能导致你的异常。

答案 1 :(得分:0)

开始在您的代码中注释掉所有内容,直到所有内容都被注释或您的控件不再加载两次。

如果仍在执行此操作,请在控件本身中启动取消操作。最终,你会遇到实际问题。