我正在创建一个模仿“分组转发器”功能的控件,同时允许它们为每个组标题定义模板,为每个组项定义另一个模板。
我的方法是创建一个具有两个公共ITemplate成员的新类,这些成员将公开一种在页面上为这两个模板定义标记的方法。然后,我将获取第一个模板并将其分配给“父转发器”的ItemTemplate,然后将第二个模板分配给子转发器的ItemTemplate。
到目前为止一切都很好。
现在我遇到了将子转发器添加到父级的ItemTemplate的问题。解决这个问题的方法是将一个控件(可能是一个占位符)添加到父转发器的ItemTemplate中,然后在ItemDataBound上将子转发器添加到占位符的控件集合中,但我没有这样的奢侈不能假设PlaceHolder将在页面标记的ItemTemplate中声明。
我要么:
:一种。以其他方式以编程方式将子转发器添加到父转发器的ItemTemplate(我不知道如何)
或
B:将一个占位符添加到父转发器的ItemTemplate中,以便在ItemDataBound上我可以执行我需要做的事情来获取子转发器
关于如何实现上述两种解决方案之一的建议就是我所追求的。任何帮助非常感谢。
如有必要,我也愿意采用其他方法。
答案 0 :(得分:0)
我已经解决了这个问题,而且我没有找到太多关于帮助我的文章,所以我会发布答案以防其他人碰到它。
我已经扩展了ITemplate来创建'NestedRepeaterItemTemplate'。这个新类将转发器作为构造函数的参数,然后将此转发器(子转发器)添加到我在InstantiateIn方法覆盖中创建的新占位符。
实际使用此类将子项添加到父转发器的代码部分可能如下所示:
parentRepeater.ItemTemplate = new NestedRepeaterItemTemplate(childRepeater);
在此代码之前,我已经将GroupItemTemplate添加到子转发器的ItemTemplate中。
排序。