如果控件的“可见”属性设置为“False”,它的任何事件都会触发吗?

时间:2017-05-02 22:01:37

标签: asp.net events event-handling lifecycle web-controls

我有一个GridView,它设置了RowDataBound个事件。

如果我在另一个控件的事件(例如按钮的OnClick事件)引起的回发期间将GridView的“Visible”属性更改为“False”,GridView的事件是否仍会触发?

查看ASP.NET Page Life Cycle Overview我无法确定是否会出现这种情况,因为文档只是说Control Events事件发生在Load事件之后和{{1}之前} event,但没有给出我可以看到的顺序,也没有关于“Visible”属性是否会改变它的事件执行的指示。

我会假设,虽然可能不正确,但是当事件导致回发时,导致回发的事件将首先执行,然后后续控制事件将按照特定顺序执行。如果控件的事件将“可见”属性更改为“True”而另一个控件在回发之前为“False”,那么变为可见的控件将“赶上”它在循环移动到{之前触发的事件{1}}页面事件。

我还假设如果在生命周期LoadCompleteLoadComplete Control Events之前的任何事件期间控件的“可见”属性设置为“False”,{ {1}},PreInitInit)这些控件的事件无法执行。

这是对的吗?我似乎找不到任何证实这一点的官方文件。

1 个答案:

答案 0 :(得分:0)

可见属性值不会影响页面中发生的事件序列和内部控件。 唯一的问题是,如果该控件的Visible设置为false,则不会调用控件的Render事件。
生命周期中的哪个事件设置值并不重要。

顺序是:

  1. 初始化 - 从儿童控制到父控制。(初始孩子 控制首先触发,而页面的初始化触发最后一个
  2. 加载 - 从父控件到子控件。
  3. 渲染 - 从父控件到子控件。
  4. 卸载 - 从子控件到父控件。
  5. 重申通过更改控件的 Visible 属性的值来触发事件没有序列更改。此外,添加动态控件时也没有追赶概念。