如何实现WEB自定义组件的OnLoad事件?

时间:2021-10-25 00:21:19
自定义组件从Component继承,而不是从Control中继承,发现从组件继承过来的,大多事件都没有实现,我现想实现OnLoad事件,类似于Controls,该怎么办?

13 个解决方案

#1


只有Control有Load事件,Component没有Load事件!

--------------------------------
AspNetPager 免费分页控件4.1版发布,欢迎下载使用:http://www.webdiyer.com


#2


Component本身是没有Load事件,但是否能自已实现?我想,Control也只不过是自己实现了而已呀。把事件加到Page对象中,当页面装载时就调用组件的装载事件,应该是可以的吧?但我不知如何实现它。

#3


组件的Initialize方法发生得太早了,以至于想调用Page对象时会出错,怎样在页面被装载时得到Request[]内容?

#4


可以重构它的create方法。

#5


构造函数与Initialize一样,都发生得太早了。

#6


Component根本没有什么Page对象,请看看.net文档中的帮助!

--------------------------------
AspNetPager 免费分页控件4.1版发布,欢迎下载使用:http://www.webdiyer.com

#7


我以前也发现过这个问题,可我到现在还没有解决,说真的,真是很讨厌Component竟然没有Load事件,我一直想用继承的方法来实现,可没有成功!

#8


Component是没有Page对象,但它可以调用它的容器所在的Page对象,如在组件的一个方法中写Page p = (Page)System.Web.HttpContext.Current.Handler;完全可以使用p来得到Request等内容,但问题是,如果是写到构造函数中,就会出错,我想是由于构造组件的时候,外层的Page对象还根本没有生成,所以不能调用到。如果是单独写在方法中,怎样可以使用JS在提交时可以自动调用呢?

#9


上面的方法确实可以调用Page对象!但Component本身没有Load事件,你如果想给它加上一个Load事件,就需要写一个组件类从Component继承,在你的这个组件类中加入你的自定义事件Load,然后再让你现在的这个组件从上面那个自定义组件继承,否则你无法给Component直接加个Load事件,事件是组件内部固有的对象,你无法添加也无法去除!

--------------------------------
AspNetPager 免费分页控件4.1版发布,欢迎下载使用:http://www.webdiyer.com

#10


多谢指导,我对自定义事件写法不太熟悉,参照MSDN写总不对。

#11


学习

#12


各位帮我测试一下我新做的控件,下载地址:
http://www.aspxcontrol.com/download/WebMessageBox.zip

#13


我又一个想法但是没有实验过:

在组件里实现OnPageLoad事件处理:
public event void OnPageLoad(EventArgs e)
{
    ....
}

在组件构造函数里:
public XXCom(Container)
{
  ...
  Page pg = container as Page;
  if (pg != null) pg.Load += new EventHandler(this.OnPageLoad);
  ...
}

试试看,有效果就给我报个喜。

#1


只有Control有Load事件,Component没有Load事件!

--------------------------------
AspNetPager 免费分页控件4.1版发布,欢迎下载使用:http://www.webdiyer.com


#2


Component本身是没有Load事件,但是否能自已实现?我想,Control也只不过是自己实现了而已呀。把事件加到Page对象中,当页面装载时就调用组件的装载事件,应该是可以的吧?但我不知如何实现它。

#3


组件的Initialize方法发生得太早了,以至于想调用Page对象时会出错,怎样在页面被装载时得到Request[]内容?

#4


可以重构它的create方法。

#5


构造函数与Initialize一样,都发生得太早了。

#6


Component根本没有什么Page对象,请看看.net文档中的帮助!

--------------------------------
AspNetPager 免费分页控件4.1版发布,欢迎下载使用:http://www.webdiyer.com

#7


我以前也发现过这个问题,可我到现在还没有解决,说真的,真是很讨厌Component竟然没有Load事件,我一直想用继承的方法来实现,可没有成功!

#8


Component是没有Page对象,但它可以调用它的容器所在的Page对象,如在组件的一个方法中写Page p = (Page)System.Web.HttpContext.Current.Handler;完全可以使用p来得到Request等内容,但问题是,如果是写到构造函数中,就会出错,我想是由于构造组件的时候,外层的Page对象还根本没有生成,所以不能调用到。如果是单独写在方法中,怎样可以使用JS在提交时可以自动调用呢?

#9


上面的方法确实可以调用Page对象!但Component本身没有Load事件,你如果想给它加上一个Load事件,就需要写一个组件类从Component继承,在你的这个组件类中加入你的自定义事件Load,然后再让你现在的这个组件从上面那个自定义组件继承,否则你无法给Component直接加个Load事件,事件是组件内部固有的对象,你无法添加也无法去除!

--------------------------------
AspNetPager 免费分页控件4.1版发布,欢迎下载使用:http://www.webdiyer.com

#10


多谢指导,我对自定义事件写法不太熟悉,参照MSDN写总不对。

#11


学习

#12


各位帮我测试一下我新做的控件,下载地址:
http://www.aspxcontrol.com/download/WebMessageBox.zip

#13


我又一个想法但是没有实验过:

在组件里实现OnPageLoad事件处理:
public event void OnPageLoad(EventArgs e)
{
    ....
}

在组件构造函数里:
public XXCom(Container)
{
  ...
  Page pg = container as Page;
  if (pg != null) pg.Load += new EventHandler(this.OnPageLoad);
  ...
}

试试看,有效果就给我报个喜。