是否可以在Repeater的SeparatorTemplate中使用Eval或类似的语法?
我想在分隔符模板中显示最后一项的一些信息,如下所示:
<table>
<asp:Repeater>
<ItemTemplate>
<tr>
<td><%# Eval("DepartureDateTime") %></td>
<td><%# Eval("ArrivalDateTime") %></td>
</tr>
</ItemTemplate>
<SeparatorTemplate>
<tr>
<td colspan="2">Change planes in <%# Eval("ArrivalAirport") %></td>
</tr>
</SeparatorTemplate>
<asp:Repeater>
<table>
跳跃它会产生这样的东西:
<table>
<asp:Repeater>
<tr>
<td>2009/01/24 10:32:00</td>
<td>2009/01/25 13:22:00</td>
</tr>
<tr>
<td colspan="2">Change planes in London International Airport</td>
</tr>
<tr>
<td>2009/01/25 17:10:00</td>
<td>2009/01/25 22:42:00</td>
</tr>
<asp:Repeater>
<table>
但是SeparatorTemplate似乎忽略了Eval()调用。我尝试使用以前的语法:&lt;%#DataBinder.Eval(Container.DataItem,“ArrivalAirport”)%&gt;结果相同。
是否可以在SeparatorTemplate中显示上一项的信息?如果没有,您能否建议另一种方法来生成此代码?
由于
答案 0 :(得分:2)
试试这个:
在WebForm的类中添加一个私有变量(或两个),您可以使用它来增加/跟踪在项目级别执行数据绑定时的航班信息。
然后在ItemDatabound事件中,如果正在数据绑定的项目是ListItemType.Seperator类型并以这种方式显示/隐藏/修改您的分隔符代码,则可以执行简单的评估。
您的WebForm页面在顶部看起来像这样:
public partial class ViewFlightInfo : System.Web.UI.Page
{
private int m_FlightStops;
protected page_load
{
// Etc. Etc.
}
}
然后当你开始使用数据绑定时:
protected void rFlightStops_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Repeater rFlightStops = (Repeater)sender;
if (e.Item.ItemType == ListItemType.Header)
{
// Initialize your FlightStops in the event a new data binding occurs later.
m_FlightStops = 0;
}
if (e.Item.ItemType == ListItemType.Item
|| e.Item.ItemType == ListItemType.AlternatingItem)
{
// Bind your Departure and Arrival Time
m_FlightStops++;
}
if (e.Item.ItemType == ListItemType.Seperator)
{
if (m_FlightStops == rFlightStops.Items.Count - 1)
{
PlaceHolder phChangePlanes =
(PlaceHolder)e.Item.FindControl("phChangePlanes");
phChangePlanes.Visible = false;
}
}
}
......或其他类似的事情。
答案 1 :(得分:0)
嘿,我会找到一种方法来识别转发器中的最后一项,以便我可以避免在那里生成分隔符:
<table>
<asp:Repeater>
<ItemTemplate>
<tr>
<td><%# Eval("DepartureDateTime") %></td>
<td><%# Eval("ArrivalDateTime") %></td>
</tr>
<% if (<<<isn't the last item>>) { %>
<tr>
<td colspan="2">Change planes in <%# Eval("ArrivalAirport") %></td>
</tr>
<% } %>
</ItemTemplate>
<asp:Repeater>
<table>
由于