描述:类似动态的东西,不同的类型会用不同的模板,不同的样式,绑定不同的字段
比如:
某某某 发表了日志《好好学习天天向上》
某某某 发表了相片《青海湖》
XXXXX
XXXXX
XXXXX
(以上XXX为图片位置)
实现:①SQL:用视图把所需数据,用SQL视图关联到一张表
②C#:(最关键的,由 果果'er http://nonlyli.cnblogs.com/ 提供,要点是用PlaceHoler放不同模板,然后在onitemcreated事件去除不用的模板)
<
asp:Repeater
id
="rptList"
runat
="server"
onitemcreated
="rptList_Created"
>
< ItemTemplate >
< asp:PlaceHolder id ="recordType1" runat ="server" >
< li > <% # Eval ( " name " ) %> 发表了日志 <% # Eval ( " title " ) %> </ li >
</ asp:PlaceHoler >
< asp:PlaceHolder id ="recordType2" runat ="server" >
< li >
<% # Eval ( " name " ) %> 发表了图片 <% # Eval ( " title " ) %>
< img src ="<%#Eval(" imgPath")% > "/>
</ li >
</ asp:PlaceHoler >
</ ItemTemplat >
< ItemTemplate >
< asp:PlaceHolder id ="recordType1" runat ="server" >
< li > <% # Eval ( " name " ) %> 发表了日志 <% # Eval ( " title " ) %> </ li >
</ asp:PlaceHoler >
< asp:PlaceHolder id ="recordType2" runat ="server" >
< li >
<% # Eval ( " name " ) %> 发表了图片 <% # Eval ( " title " ) %>
< img src ="<%#Eval(" imgPath")% > "/>
</ li >
</ asp:PlaceHoler >
</ ItemTemplat >
protected
void
Repeater1_ItemCreated(
object
sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
DataRowView dr = (DataRowView)e.Item.DataItem;
Control c = e.Item.FindControl( " recordType " + dr[ " type " ]);
e.Item.Controls.Clear();
e.Item.Controls.Add(c);
}
}
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
DataRowView dr = (DataRowView)e.Item.DataItem;
Control c = e.Item.FindControl( " recordType " + dr[ " type " ]);
e.Item.Controls.Clear();
e.Item.Controls.Add(c);
}
}
实际上可能用Visible好些
代码
<
asp:Repeater
ID
="rptTest"
runat
="server"
>
< ItemTemplate >
< asp:PlaceHolder ID ="itemName" Visible ='<%#((string)Eval("type"))=="name" % > ' runat="server">
Name: <% # Eval ( " content " ) %>
</ asp:PlaceHolder >
< asp:PlaceHolder ID ="itemAge" Visible ='<%#((string)Eval("type"))=="age" % > ' runat="server">
Age: <% # Eval ( " content " ) %>
</ asp:PlaceHolder >
</ ItemTemplate >
</ asp:Repeater >
< ItemTemplate >
< asp:PlaceHolder ID ="itemName" Visible ='<%#((string)Eval("type"))=="name" % > ' runat="server">
Name: <% # Eval ( " content " ) %>
</ asp:PlaceHolder >
< asp:PlaceHolder ID ="itemAge" Visible ='<%#((string)Eval("type"))=="age" % > ' runat="server">
Age: <% # Eval ( " content " ) %>
</ asp:PlaceHolder >
</ ItemTemplate >
</ asp:Repeater >