【问题标题】:asp.net perform action after child controls databound completeasp.net 在子控件数据绑定完成后执行操作
【发布时间】:2016-04-14 23:57:19
【问题描述】:

我有一个用户控件,它充当容器,在其中容纳更多用户控件。

一旦所有子控件都绑定了数据,我需要执行某些访问检查。

我希望我可以附加到 usercontrol.databound 事件,但似乎没有。

一旦其他用户控件具有数据绑定,我还必须对父用户控件执行哪些操作。我假设我必须让子控件通知父控件他们有数据绑定,并且父控件需要跟踪哪些有数据绑定,哪些没有,当它们都有数据绑定时,它可以执行它的操作。

【问题讨论】:

    标签: asp.net events user-controls databound


    【解决方案1】:

    您不需要让子控件通知父控件。看看ASP.Net Page :Life Cycle。您需要将代码放在 PreRender 事件中的容器用户控件中。这在回发事件之后执行。

    【讨论】:

    • 我正在考虑将它放在预渲染中作为最后的手段。我们以前在预渲染中做这种事情的经历很糟糕,但我认为这主要是因为一个神类控制了所有的逻辑,而不是每个控件都有它需要的逻辑。
    【解决方案2】:

    基于ASP.net Page Life Cycle Events的文章我使用了这个:

    protected void Page_PreRenderComplete(object sender, EventArgs e)
    {
      if (!IsPostBack) //only at 1st load
        UpdateSelection();
    }
    
    protected void UpdateSelection()
    {
      UpdateSelection(listItems.SelectedValue);
    }
    
    protected void listItems_SelectedIndexChanged(object sender, EventArgs e)
    {
      UpdateSelection();
    }
    

    在我的例子中,UpdateSelection 正在从下拉列表中选择的文件中加载 XML 数据(开始时指向索引 0),并且需要页面上的一些 CheckBoxLists 首先从其他 XML 文件中获取它们的项目,以便它们将允许代码根据 XML 数据检查项目上的项目

    从那时起 UpdateSelection 只是在下拉列表 SelectedIndexChanged 事件中被调用(那些执行 PostBacks 所以在 PreRenderComplete 我忽略它们以避免执行两次 UpdateSelection)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 2011-04-04
      • 2011-09-09
      • 1970-01-01
      • 2011-09-07
      • 1970-01-01
      • 2015-05-12
      相关资源
      最近更新 更多