<%# DataBinder.Eval(Container.DataItem, "customerId") %>
<%# ((DataRowView)Container.DataItem)["customerId"] %>
<%# ((User)Container.DataItem).UserName%>
<%# FormatDate(DataBinder.Eval(Container.DataItem, "Ordered"))%>
<%# FormatMoney(DataBinder.Eval(Container.DataItem, "Amount"))%>
Visible='<%# (int)DataBinder.Eval(Container.DataItem, "Pets.Count") > 0 %>'>
后台:
protected
string
FormatDate(
object
date)
{
if (date == DBNull.Value){
return "n/a";
}
try{
return ((DateTime)date).ToShortDateString();
}catch{
return "n/a";
}
}
protected
string
FormatMoney(
object
amount)
{
if (amount == DBNull.Value){
return String.Format("{0:C}", 0);
}
return String.Format("{0:C}", amount);
}
protected
void
itemDataBoundRepeater_ItemDataBound(
object
source,
RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem ||
e.Item.ItemType == ListItemType.Item){
Literal lit = (Literal)e.Item.FindControl("see");
if (lit != null){
Owner owner = (Owner)e.Item.DataItem;
if (owner.Pets.Count == 0){
lit.Text = "no pets";
}else{
lit.Text = "see pets";
}
}
}
}
Nested Data
ds.Relations.Add(
new
DataRelation(
"
CustomerOrders
"
,
ds.Tables[
0
].Columns[
"
CustomerId
"
],
ds.Tables[
1
].Columns[
"
CustomerId
"
]));
DataSource='<%# ((DataRowView)Container.DataItem).CreateChildView("CustomerOrders")%>'
DataSource='<%# DataBinder.Eval(Container.DataItem, "CutomerOrders")%>'
DataSource="<%# ((Owner)Container.DataItem).Pets%>"
DataSource='<%# DataBinder.Eval(Container.DataItem, "Pets")%>'
1 protected void dataSetCasting_ItemDataBound(object s,
2 RepeaterItemEventArgs e) {
3 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType
4 == ListItemType.AlternatingItem){
5 Repeater rpt = (Repeater)e.Item.FindControl("orders");
6 if (rpt != null){
7 rpt.DataSource =
8 ((DataRowView)e.Item.DataItem).CreateChildView("CustomerOrders");
9 rpt.DataBind();
10 }
11 }
12 }
1<asp:LinkButton ID="delete"
2 Runat="server"
3 CommandName="Delete"
4 CommandArgument='<%# DataBinder.Eval(Container.DataItem,
5 "CustomerId") %>'>
1
protected
void
eventRepeater_ItemCommand(
object
s,
2
3
RepeaterCommandEventArgs e)
{
4 int customerId = Convert.ToInt32(e.CommandArgument);
5 switch (e.CommandName.ToUpper()){
6 case "DELETE":
7 CustomerUtility.DeleteCustomer(customerId);
8 BindEventRepeater(false);
9 break;
10 case "Add":
11 //doesn't actually do antyhing right now.
12 break;
13 }
14 }
DataItem:如果你用的数据源是Table、DataSet之类的话,那么它可以强制类型转换为DataRowView;如果你用的是自定义实体集合,那么它可以强制类型转换为相应的实体。