嵌套中继器-访问父中继器中的项目数

时间:2019-07-15 13:10:10

标签: c# asp.net

我是ASP.NET的新手,我正在将某些页面从ColdFusion转换为.NET和C#。在ColdFusion中,我在记录集,日程表和日程表详细信息之间进行嵌套循环,为每个日程表及其详细信息创建一个表,并隐藏除活动表以外的所有表。呈现表格时,我在表格的第一行中创建了导航机制,它将显示上一个或下一个表格并隐藏当前表格(通过jQuery):

<< 07/15/2019 - 07/22/2019 >>    
[schedule details rows]

在Coldfusion中这是微不足道的,但是我花了数小时试图在ASP.NET中复制它,但没有成功。我需要知道项目总数(父记录的数量),并有条件地呈现人字形,具体取决于我是在第一条记录,最后一条记录还是在两条记录之间。

我尝试使用会话变量,在后面的代码中:

int count = repScheduleDates.Items.Count;
Session["scheduleDatesCount"] = count;

Debug.WriteLine("Session[scheduleDatesCount]: " + Session["scheduleDatesCount"]);

如果我有2条记录,调试打印将显示2。但是,在aspx文件中

<%#Session["scheduleDatesCount"]%>

什么都不显示(不是0;只有输出)。

如果我在aspx中这样做:

<%# repScheduleDates.Items.Count %>

显示当前项目编号; 0或1,不是总数。

<asp:Repeater runat="server" id="repScheduleDates">
        <HeaderTemplate>
            <table style="border:1px solid #0000FF;">  
        </HeaderTemplate>
        <ItemTemplate>
                <tr style="background-color:#FF6600; color:#000000; font-size: large;">  
                    <td style="text-align: center;" colspan="6">
                        <%-- I need a conditional statement here to add the appropriate class if first record or not --%>
                        <i id="leftNav_<%#Container.ItemIndex%>" class="fa fa-chevron-left"></i> 
                            <%#Eval("schStartDate") %> - <%#Eval("schEndDate") %>
                        <%-- I need a conditional statement here to add the appropriate class if last record or not --%>
                        <i id="rightNav_<%#Container.ItemIndex%>" class="fa fa-chevron-right"></i> 
                    </td>  
                </tr>
                [more parent stuff...]
                <asp:Repeater id="repScheduleDetails" runat="server" OnDataBinding="repScheduleDetails_DataBinding">
                    <ItemTemplate>
                        [output child stuff...]                 
                    </ItemTemplate>
                </asp:Repeater>
        </ItemTemplate>
        <FooterTemplate>      
            </table>
        </FooterTemplate>
    </asp:Repeater>

如何获取父转发器中的项目总数?

1 个答案:

答案 0 :(得分:1)

<%#Session["scheduleDatesCount"]%>

这不会显示记录。

可以使用

<%=Session["scheduleDatesCount"]%>

或在.cs页上创建公共变量计数,并在

这样的aspx页上显示
<%=count%>