Repeater.ItemTemplate 可以改变吗?

来源:百度知道 编辑:UC知道 时间:2024/05/29 13:16:11
例如我写了一个用户控件,里面有个Repeater

在某些时候需要:<ItemTemplate><a href="<%# Eval("Link") %>"><%# Eval("Title") %></a></ItemTemplate>

而有些时候需要:<ItemTemplate><%# Eval("Title") %>:<%# Eval("Date") %>:</ItemTemplate>

也就是显示的内容可能会变动.(但数据源是一样的),有实现的方法吗???
这个方法不错,不过我没用过,具体在后台如何写?可以给个简单的例子吗?谢谢了

我觉得你应该这样做:
<ItemTemplate>
<asp:Panel1 id="panel1" ....>
<a href="<%# Eval("Link") %>"><%# Eval("Title") %></a>
</asp:Panel1>
<asp:Panel2 id="panel2">
<%# Eval("Title") %>:<%# Eval("Date") %>:
</asp:Panel>
</ItemTemplate>

然后在ItemDataBound事件里根据条件去控制显示哪个panel

protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Panel panel1 = (Panel)e.Item.FindControl("panel1");
Panel panel2 = (Panel)e.Item.FindControl("panel2");
string type = DataBinder.Eval(e.Item.DataItem, "type").ToString();
if (type == "1")
{