【问题标题】:DetailsView resetting visibility on bind?详细信息视图在绑定时重置可见性?
【发布时间】:2011-06-26 07:54:27
【问题描述】:

我正在使用实体框架 4.0 将数据库对象绑定到 ascx 控件上的 DetailsView。在 DetailsView 中,我有许多 asp:panels,我想根据该人访问中发生的情况来显示/隐藏它们。

所以,第一次通过页面时,我在 FormView_OnLoad 事件中设置了 panelA.Visible=false,一切都很好 - 该面板不会在 HTML 中输出。它听我在这里问什么。

单击提交和回发后,我将再次检查发生的情况并在 FormView_OnLoad 和 EntityData_OnUpdating 中设置 panelA.Visibe=false。但是这一次,当页面出现时 panelA 正在显示。

我发现我只能通过在 DetailsView_PreRender 中设置 visible=false 或将可见性绑定到公共变量来在回发后隐藏该面板。

我在想,也许在 life cycle 中,DetailsView 将再次绑定到最后,并丢弃我的可见性设置,即使它们没有绑定。因此,要在回发时在 DetailsView 中显示/隐藏面板,我是否总是必须在 DetailsView_PreRender 或之后设置可见性?

我是在正确的轨道上,还是在最后一秒重置了我?

为什么我可以在第一次通过页面时设置可见性但不能回发?

【问题讨论】:

    标签: asp.net entity-framework-4 visibility detailsview


    【解决方案1】:

    您应该始终在回发处理后对您的页面结构进行最终修改——这就是PreRender 事件存在的原因。您的场景中其他可能的事件可以处理 DataBound 事件,但更好、更清晰的方法是PreRender

    【讨论】:

    • 谢谢。我了解 PreRender 是在其他所有工作完成后进行更改的地方。但是我仍然很困惑为什么页面状态会在第一次通过页面时保留我的更改,而不是在我更改回发设置时。
    • @Chad:这很难说。这需要在后面的代码中检查整个代码。数据绑定控件提供了许多内部触发数据绑定的属性。只需设置这些属性即可清除当前控件状态并再次对其进行数据绑定。
    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 2010-12-06
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多