Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用OnItemDataBound时,如何获取中继器中的前一行?_C#_Asp.net_Repeater - Fatal编程技术网

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);
}