![ASP.NET项目开发全程实录(第4版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/589/26793589/b_26793589.jpg)
2.9 销售订单管理模块设计
2.9.1 销售订单管理模块概述
销售订单管理也是51电子商城网站开发的一个重要环节,当用户购买完自己所需商品放入购物车后就要去网上服务台填写商品订单,对所购买的商品进行结算,所以对用户的销售订单管理非常重要。
在网站后台的销售订单管理模块中,管理员单击菜单栏中“订单管理”下的“未确认”“已确认”“未发货”“已发货”“未归档”或“已归档”任一个按钮,都会在功能执行区中打开如图2.31所示的订单管理页面。在该页面中,管理员可以根据实际需要查询、浏览和删除订单信息。
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P105_6206.jpg?sign=1738854588-hcNANNi6IUp02CVsnhczfKc1RYGMdVKa-0-f24491d3d183063ba249d6f57d42b3ad)
图2.31 订单管理页面
另外,在该订单管理模块中对“未确认”“已确认”“未发货”“已发货”“未归档”和“已归档”所涉及的商品信息都可以打印出来。
当用户单击图2.31所示页面中的“管理”链接按钮时,将会在功能执行区中打开如图2.32所示的订单信息页面,用户可以在该页面中查询某一订单的详细信息,并且可以对订单状态信息进行修改。
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P105_6210.jpg?sign=1738854588-sYi5lmbs1bs0BJqrElvZdAzvjZBZCWJL-0-7976b8305796f928a47280c24c8620d4)
图2.32 订单信息页面
2.9.2 销售订单管理模块技术分析
要给用户一个订单凭证,就要把用户订单打印出来。在销售订单管理模块中应用了打印技术,下面进行介绍。
在图2.32中当用户单击“打印”按钮后,将会对订单进行打印,同时隐藏“打印”按钮。实现该功能的具体步骤如下:
(1)将页面切换到HTML源码中,设置“打印”按钮的onclick事件为printPage(),并将“打印”按钮置于id为printOrder的<span></span>节中。其源代码如下:
<div class="col-sm-6 col-md-6"><input type="button" onclick='printOrder(<%=Request.QueryString["OrderID"]%>)' value="打 印" id="Button1"></div>
(2)在<head></head>节中,使用JavaScript语言,编写如下代码,实现当用户单击“打印”按钮时,隐藏“打印”按钮并对订单进行打印。
例程35 代码位置:资源包\TM\02\B2C\B2C\Manage\OrderPrint.aspx
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P106_33196.jpg?sign=1738854588-XCvQ9s9ItC3uVxDbBFzWwSfkcdkqjydU-0-bc16d1bb4f913a1690e1383191bb18d0)
2.9.3 销售订单管理模块实现过程
本模块使用的数据表:tb_Admin、tb_OrderInfo、tb_Detail
1. 设计步骤
(1)在该网站中的Manage文件夹下创建一个Web窗体,将其命名为OrderList.aspx。
(2)通过使用bootstrap+div为整个页面布局。从“工具箱”选项卡中拖放两个TextBox控件、3个DropDownList控件、一个Label控件、一个Button控件和一个GridView控件。TextBox控件、Label控件、Button控件和GridView控件的属性设置及用途如表2.7所示。
表2.7 TextBox控件、Label控件、Button控件和GridView控件的属性设置及用途
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-T106_33199.jpg?sign=1738854588-BhCNCm7GJAYwSGcvL9BbJZb8Jwe10bdi-0-24de9de5a4daace4ef03a3ad53bfbe5f)
2. 代码实现
在后台代码页(OrderList.aspx.cs)中编写代码前,首先需要定义CommonClass类对象、DBClass类对象和OrderClass类对象,以便在编写代码时,调用该类中的方法。代码如下:
例程36 代码位置:资源包\TM\02\B2C\B2C\Manage\OrderList.aspx.cs
CommonClass ccObj = new CommonClass(); DBClass dbObj = new DBClass(); OrderClass ocObj = new OrderClass();
在Page_Load事件中,调用自定义方法pageBind,分类显示订单信息。代码如下:
例程37 代码位置:资源包\TM\02\B2C\B2C\Manage\OrderList.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P107_33203.jpg?sign=1738854588-377UoD9NwFGcune9IvoK7Ob0sQp3g0sj-0-c8753c5b81e081e0000ce991f50dd649)
自定义方法pageBind,首先从商品订单表(tb_OrderInfo)中获取订单信息,然后将获取的订单信息绑定到GridView控件中。代码如下:
例程38 代码位置:资源包\TM\02\B2C\B2C\Manage\OrderList.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P107_33205.jpg?sign=1738854588-4bBpxEE5FvHWZJO5HcdfRsiO8BN4yr4d-0-04bd4c38280f345c6a7b4b310f04480a)
当用户输入关键信息后,单击“搜索”按钮,将会触发该按钮的Click事件。在该事件下,调用自定义方法gvSearchBind绑定查询后的订单信息。代码如下:
例程39 代码位置:资源包\TM\02\B2C\B2C\Manage\OrderList.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P108_33208.jpg?sign=1738854588-2O9nED884mVZ2xvuVauKJyfIrTXB4Dl3-0-8220cdd378fe9d8af90e2a54352f81df)
自定义方法gvSearchBind,首先获取查询条件,然后调用OrderClass类的ExactOrderSearch方法,查询符合条件的商品信息,并将其绑定到GridView控件上。代码如下:
例程40 代码位置:资源包\TM\02\B2C\B2C\Manage\OrderList.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P108_33210.jpg?sign=1738854588-654Gp6asqwQXWeIPxjbwBeGk4LJe6wW6-0-53a78f85d2888054ed92a21a35ac6328)
在GridView控件的RowDeleting事件下,编写如下代码,实现当用户单击某个订单后的“删除”按钮时,首先判断该订单是否被确认或归档,如果没有被确认(说明购物用户不存在)或已归档(说明货物已被用户验收),则将该订单从商品订单表中删除。
例程41 代码位置:资源包\TM\02\B2C\B2C\Manage\OrderList.aspx.cs
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P109_33214.jpg?sign=1738854588-T3jyKT7Fc2AQxUvbiOs4doMzpo9MbGJz-0-71502decb5a22f180b0ce8efa73abf81)
为GridView控件的“订单状态”和“管理”两个数据列绑定数据项,主要应用DataBinder.Eval方法进行页面绑定。将页面切换到HTML源码中,编写如下加粗的代码:
例程42 代码位置:资源包\TM\02\B2C\B2C\Manage\OrderList.aspx
![](https://epubservercos.yuewen.com/60F777/15253385804108706/epubprivate/OEBPS/Images/Figure-P110_33216.jpg?sign=1738854588-DoRjZDx9fuR93qD0xIYAS3BkL2HfWGeU-0-9ed1c062dedc3c51866f7b222a9ba614)
代码贴士
❶绑定订单号,并通过后台代码中的公共方法GetAdminName获取跟单员名。
❷绑定下单时间,并将其转化为长日期型。
❸绑定订单号,并通过后台代码中的公共方法GetStatus获取跟单员。
❹当用户单击“管理”按钮后,跳转到“订单修改”页,并传递订单号。