我是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>
如何获取父转发器中的项目总数?
答案 0 :(得分:1)
<%#Session["scheduleDatesCount"]%>
这不会显示记录。
可以使用
<%=Session["scheduleDatesCount"]%>
或在.cs页上创建公共变量计数,并在
这样的aspx页上显示<%=count%>