C# 使用OnItemDataBound时,如何获取中继器中的前一行?
我有一个中继器,它可以创建一个按完成日期排序的任务列表C# 使用OnItemDataBound时,如何获取中继器中的前一行?,c#,asp.net,repeater,C#,Asp.net,Repeater,我有一个中继器,它可以创建一个按完成日期排序的任务列表 <asp:Repeater ID="rptCompletedProjectTasks" OnItemDataBound="rptCompletedProjectTasks_ItemDataBound" runat="server"> <HeaderTemplate> <h3>Completed Tasks</h
<asp:Repeater ID="rptCompletedProjectTasks" OnItemDataBound="rptCompletedProjectTasks_ItemDataBound" runat="server">
<HeaderTemplate>
<h3>Completed Tasks</h3>
<table class="projTaskTable">
<tr>
<th style="width:100px">W/C</th>
<th style="width:450px">Description</th>
<th style="width:100px">Due</th>
<th style="width:100px">Completed</th>
<th style="width:50px">Var</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><asp:Label ID="lblWeek" runat="server" Text=''></asp:Label></td>
<td><%# Eval("description") %></td>
<td><%# Eval("deadline", "{0:d MMM yy}") %></td>
<td><asp:Label ID="lblCompleted" runat="server" Text='<%# Eval("completedDate", "{0:d MMM yy}") %>'></asp:Label></td>
<td><%# Eval("var") %></td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
我用于获取一周开始日期的函数是:
protected DateTime getWeekCommencing(DateTime date)
{
int delta = DayOfWeek.Monday - date.DayOfWeek;
DateTime monday = date.AddDays(delta);
return monday;
}
也许你可以使用并检查这是最后一项
e.Item.ItemIndex
实现这一点的一个简单方法是在page类上使用私有属性。 您可以创建一个属性,如
private DateTime currentWeek.
,您可以在页面加载中启动此属性,就像在方法的开头使用weekcommenting一样
在每行数据绑定上,您可以检查此行日期是否与currentWeek变量在同一周内,如果不是,则设置标签文本并将currentWeek设置为此行周
protected void Page_Load(object sender, EventArgs e)
{
currentWeek = new DateTime(1970, 1, 1);
}
好球!工作。(这个中继器嵌套在另一个中继器中,所以我添加了一些东西来重置每个表创建后的日期:if(e.Item.ItemType==ListItemType.Footer){weekcommenting=new DateTime(1970,1,1);}
protected void Page_Load(object sender, EventArgs e)
{
currentWeek = new DateTime(1970, 1, 1);
}