以编程方式将控件添加到转发器项模板

时间:2013-11-11 09:56:24

标签: c# asp.net .net-4.0 controls repeater

我正在创建一个模仿“分组转发器”功能的控件,同时允许它们为每个组标题定义模板,为每个组项定义另一个模板。

我的方法是创建一个具有两个公共ITemplate成员的新类,这些成员将公开一种在页面上为这两个模板定义标记的方法。然后,我将获取第一个模板并将其分配给“父转发器”的ItemTemplate,然后将第二个模板分配给子转发器的ItemTemplate。

到目前为止一切都很好。

现在我遇到了将子转发器添加到父级的ItemTemplate的问题。解决这个问题的方法是将一个控件(可能是一个占位符)添加到父转发器的ItemTemplate中,然后在ItemDataBound上将子转发器添加到占位符的控件集合中,但我没有这样的奢侈不能假设PlaceHolder将在页面标记的ItemTemplate中声明。

我要么:

:一种。以其他方式以编程方式将子转发器添加到父转发器的ItemTemplate(我不知道如何)

B:将一个占位符添加到父转发器的ItemTemplate中,以便在ItemDataBound上我可以执行我需要做的事情来获取子转发器

关于如何实现上述两种解决方案之一的建议就是我所追求的。任何帮助非常感谢。

如有必要,我也愿意采用其他方法。

1 个答案:

答案 0 :(得分:0)

我已经解决了这个问题,而且我没有找到太多关于帮助我的文章,所以我会发布答案以防其他人碰到它。

我已经扩展了ITemplate来创建'NestedRepeaterItemTemplate'。这个新类将转发器作为构造函数的参数,然后将此转发器(子转发器)添加到我在InstantiateIn方法覆盖中创建的新占位符。

实际使用此类将子项添加到父转发器的代码部分可能如下所示:

parentRepeater.ItemTemplate = new NestedRepeaterItemTemplate(childRepeater);

在此代码之前,我已经将GroupItemTemplate添加到子转发器的ItemTemplate中。

排序。