这次火车订票系统的多表之间联合查询非常频繁,有的甚至为了实现某个统计功能,经过查询多个视图(视图再查询视图),想这个性能消耗挺大的。
由于学校火车订票系统需要按学院班级统计票数和钱数。实现如下图所示列表。以下直奔主题。
aspx页面部分代码:
asp:SqlDataSource ID= SqlDataSource1 runat= server ConnectionString= %$ ConnectionStrings:TrainConnectionString % /asp:SqlDataSource div ' %# 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(); } } }
这次火车订票系统的多表之间联合查询非常频繁,有的甚至为了实现某个统计功能,经过查询多个视图(视图再查询视图),想这个性能消耗挺大的。