多级分类统计列表ListView实现

由于学校火车订票系统需要按学院班级统计票数和钱数。实现如下图所示列表。以下直奔主题。

1

aspx页面部分代码:
 
复制代码
代码
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString
="<%$ ConnectionStrings:TrainConnectionString %>" >
</asp:SqlDataSource>
<div style="color:#4C4847;font-size:16px;margin:0 auto;text-align:center;padding:10px;font-weight:bold;">

福州大学火车订票系统
-订票明细表(<%=DateTime.Now.ToShortDateString() %></div>
<asp:ListView ID="lsvAcademe" runat="server" DataSourceID="SqlDataSource1" DataKeyNames="AcademeID" >
<EmptyDataTemplate>
<div style="color:red;font-size:16px;margin:0 auto;text-align:center;">对不起,没有找到您想要的数据!</div>
</EmptyDataTemplate>
<LayoutTemplate>
<table class="order-list-table">
<tr>
<th>学院</th><th>票数</th><th>硬座总价</th><th>预收总价</th>
<th>班级</th><th>票数</th><th>硬座总价</th><th>预收总价</th>
<tr>
<asp:PlaceHolder ID="itemPlaceHolder" runat="server"></asp:PlaceHolder>
<td colspan="8" style="height:0;"></td>
</tr>
</table>
</LayoutTemplate>
<ItemTemplate>
<td rowspan='<%# Eval("ClassCount") %>' ><%# Eval("Academe") %></td>
<td rowspan='<%# Eval("ClassCount") %>' ><%# Eval("TicketCount") %></td>
<td rowspan='<%# Eval("ClassCount") %>' ><%# String.Format("{0:0.0}",Eval("HardseatTotal")) %></td>
<td rowspan='<%# Eval("ClassCount") %>' ><%# String.Format("{0:0.0}",Eval("AdvanceTotal")) %></td>
<uc1:ListViewClass ID="ListViewClass1" runat="server" AcademeID='<%#Eval("AcademeID") %>' />
</ItemTemplate>
</asp:ListView>
复制代码


其中我用到了Listview控件的嵌套,但是我将其分离为一个独立的用户控件。
控件的显示代码:


复制代码
代码



<asp:ListView runat="server" ID="lsvClass" DataSourceID="SqlDataSource1">
<LayoutTemplate>
<asp:PlaceHolder ID="itemPlaceHolder" runat="server"></asp:PlaceHolder>
</LayoutTemplate>
<ItemTemplate>
<td><%#Eval("ClassName") %></td>
<td><%#Eval("TicketCount") %></td>
<td><%#String.Format("{0:0.0}",Eval("HardSeatTotal")) %></td>
<td><%#String.Format("{0:0.0}",Eval("AdvanceTotal")) %></td></tr><tr>
</ItemTemplate>
</asp:ListView>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString
="<%$ ConnectionStrings:TrainConnectionString %>"
SelectCommand
="SELECT * FROM [V_DetailOrderListForClass]"></asp:SqlDataSource>
复制代码


控件的cs页面代码:

复制代码
代码



namespace Website.Controls
{
public partial class ListViewClass : System.Web.UI.UserControl
{
private string academeID;
public string AcademeID
{
set { academeID = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
SqlDataSource1.SelectCommand
= "SELECT * From [V_DetailOrderListForClass] where AcademeID=@AcademeID";
SqlDataSource1.SelectParameters.Add(
"AcademeID",System.TypeCode.Int32, academeID);
lsvClass.DataBind();
}
}
}
复制代码


这次火车订票系统的多表之间联合查询非常频繁,有的甚至为了实现某个统计功能,经过查询多个视图(视图再查询视图),我想
这个性能消耗挺大的。

posted @   Timothy  阅读(1416)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示