【问题标题】:How to stop a web control from loading child controls?如何阻止 Web 控件加载子控件?
【发布时间】:2009-09-08 20:31:12
【问题描述】:

这是针对 ASP.NET 的。想想多视图控件。它有一对多的视图控件。每个视图控件都具有保持控件的能力,但是一次只能看到一个视图。

记住这一点,我想我想“告诉”不可见的视图不加载,因此,不加载子控件。

在我的示例中,在视图加载期间,我检查它是否是活动视图。如果它不活动,那么我停止处理负载。不幸的是,不活动的视图仍然运行它们的加载事件,并且控制树中的所有控件都运行它们的加载。

回到问题:有没有办法阻止子控件为不活动的视图运行?

代码示例:

Private Sub viewDisplayArticle_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles viewDisplayArticle.Load

  If Not mvwHealthArticles.ActiveViewIndex = mvwHealthArticlesView.DisplayArticle Then Exit Sub

  callSomeKillerMethod()

End Sub

【问题讨论】:

    标签: asp.net controls web-controls multiview


    【解决方案1】:

    将不可见子控件的Visible属性设置为False,然后仅在Visible为true时运行子控件中的Load事件处理程序。

    Private Sub viewDisplayArticle_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles viewDisplayArticle.Load
    
      If Visble = True
      Then ' Load Logic
      Else ' do nothing
    
    End Sub
    

    【讨论】:

    • 好主意,但在专门处理 System.Web.UI.WebControls.View 时不允许这样做。 System.InvalidOperationException: View 控件的 Visible 属性只能通过设置 MultiView 的活动视图来设置。
    • 这很有趣。我可能会尝试制作一个模板化控件(例如带有 等的 GridView),因为我从未尝试过 MultiView 控件……祝你好运!
    猜你喜欢
    • 2016-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    相关资源
    最近更新 更多