多级分类统计列表实现

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

双击代码全选

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

<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控件的嵌套,但是我将其分离为一个独立的用户控件。

控件的显示代码:

双击代码全选

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<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页面代码:

双击代码全选

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<pre class="brush:css;toolbar:false;">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(); 

        

    

}</pre><p>

</p>

 

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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Grow your business fast with

Suku