0

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

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

到目前为止一切都很好。

现在我留下了将子转发器添加到父项的 ItemTemplate 的问题。对此的解决方案是将控件(可能是占位符)添加到父转发器的 ItemTemplate,然后在 ItemDataBound 上,将子转发器添加到占位符的控件集合中,但我没有这种奢侈,因为我不能假设 PlaceHolder 将在页面标记的 ItemTemplate 中声明。

我要么需要:

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

或者

B:向父转发器的 ItemTemplate 添加一个占位符,以便在 ItemDataBound 上我可以做我需要做的事情来让子转发器进入

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

如有必要,我也愿意接受替代方法。

4

1 回答 1

0

我已经解决了这个问题,但我没有找到太多可以帮助我的文章,所以我会发布答案以防万一其他人遇到它。

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

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

parentRepeater.ItemTemplate = new NestedRepeaterItemTemplate(childRepeater);

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

排序。

于 2013-11-11T10:16:32.333 回答