我正在考虑将一些用户控件转换为使用模板。其中一个是我自己的UC,它包含一些控件,其中一个是中继器。是否可以从第一级用户控件的模板(将在页面上)指定第二级用户控件的模板?
发布于 2010-05-09 00:23:12
假设我正确理解了您的问题,请尝试如下所示:
Page.aspx:
<%@ Page Language="C#" %>
<%@ Register src="UC.ascx" tagname="UC" tagprefix="uc1" %>
<uc1:UC ID="UC1" runat="server">
<RepeaterTemplate>
<%# Eval("Name") %> <%# Eval("Age") %><br />
</RepeaterTemplate>
</uc1:UC>UC.ascx:
<%@ Control Language="C#" ClassName="UC" %>
<script runat="server">
class Person {
public string Name { get; set; }
public int Age { get; set; }
}
protected void Page_Load(object sender, EventArgs e) {
repeater1.ItemTemplate = RepeaterTemplate;
repeater1.DataSource = new Person[] {
new Person { Name="Joe", Age=20},
new Person { Name="Jack", Age=30},
};
repeater1.DataBind();
}
public ITemplate RepeaterTemplate { get; set; }
</script>
<asp:Repeater runat="server" ID="repeater1">
</asp:Repeater>这基本上是将外部页面上指定的模板传递给用户控件中的中继器。
这可能不是你想要的场景,但希望能给你一些启发。
发布于 2010-05-11 00:26:10
我不确定我是否理解了你的问题,但是我做了很多使用动态模板的多级中继器。我使用不带代码的UserControls作为放置模板html的方便位置。
在后台代码中(例如来自父转发器的ItemDataBound事件),我选择适当的模板并设置它:
repeater.ItemTemplate = MyBase.LoadTemplate(templateControlName)
repeater.DataSource = dataSource
repeater.DataBind()https://stackoverflow.com/questions/2766122
复制相似问题