【发布时间】:2011-07-10 02:33:51
【问题描述】:
我正在使用 Telerik ASP.Net Ajax 控件(理论上谁让第 3 方控件无关紧要)。我想创建我自己的自定义服务器控件(不是用户控件),它具有我自己的预定义 HTML 输出,但还包括 Telerik DatePicker。由于 Telerik DatePicker 是另一个服务器控件将服务器控件放入我的自定义服务器控件的正确过程是什么。
我的理解是服务器控件通过编写 html 输出来工作。如何编写我在 Render 方法中实例化的另一个控件的输出,并且仍然保留原始控件的各个生命周期。
期望的结果:
- 我自己的自定义服务器控件包含许多第 3 方控件(即 RadDatePicker)。
解决方案
感谢@Sumo 为我指明了 Composite 控件的方向。文档可用here。
我能够通过创建一个继承CompositeDataBoundControl 的控件来解决这个问题。然后对我的数据源进行数据绑定,计算需要多少自定义控件,将它们放入 ArrayList 并正确实例化它们(在CreateChildControls() 中使用它们自己的生命周期)。然后,我可以通过调用尚未呈现的 ArrayList 索引,在 Render() 方法中呈现 DatePicker 的 ArrayList 中的每个控件。
例如。 ((RadDatePicker)datePickerArray(instantiatedDatePickersCount)).RenderControl(writer).
目前它是一个肮脏的解决方案,但它适用于我的测试目的。
【问题讨论】:
标签: asp.net telerik custom-server-controls