List函数
当用户访问list.htm时,服务器会将访问请求转给自定义函数list处理。
list函数用于分页显示数据,这里假定使用的是SQL
Server数据源,其代码为:
1 |
Dim
e As
RequestEventArgs =
args(0) |
代码解析
list.htm一般带有一个page参数,例如:
list.htm?page=2
表示要显示第3页数据。
如果要删除订单,还需要带有deloid参数,例如:
list.htm?page=2&deloid=161130078
表示要删除编号为161130078的订单,然后显示第3页数据。
第3行代码判断GetValues是否由deloid参数。
如果有,则在第4行代码删除对应的订单,在第5行代码删除对应的订单明细。
第8行代码定义了一个变量page,这个变量表示要显示的页面,默认为0.,也就是显示第1页。
第10行到第12行代码,判断GetValues集合是否包括page参数,如果有的话, 将其转换为整数保存在变量page中。
第13行和第14行代码,分别计算出此页第一行数据的顺序号,和最后一行数据的顺序号。
第19行代码统计出订单表的总行数,第20行代码据此算出总页数。
第21行到第24行代码,利用SQL语句提取出这一页数据,保存在DataTable型变量dt中。
需要注意几点:
1、顺序号根据订单编号降序生成,保证新增订单显示在第一页。
2、后台的订单表其实没有数量和金额两列,所以要在select语句中用聚合函数计算出每个订单的数量和金额。
3、订单和订单明细表用的是Left Join方式联结,确保没有录入订单明细的订单,也能出现在查询结果中。
第27行到第32行代码根据这页数据生成表格。
第28行代码设置了表的页码。
第29行代码设置了表格的上拉菜单名称。
第30行代码指定了主键列名称,这个名称不一定是订单表真正的主键,只要是能唯一区分每个订单的列即可。
第34行到第41行生成了上拉菜单,菜单名称必须和第29行代码使用的名称保持一致。
第42行到第45行代码生成了一个对话框,用于删除订单。
第47到第59行代码生成了操作按钮。
除了上一页和下一页命令,其他命令都是调用js函数。
这些js函数定义在“d:\web\lib\order.js”文件中,我们之前已经对此进行了介绍。
第60行代码引用了这个js函数文件。
综上所述,list.htm默认只显示三个常用的按钮,分别是增加订单、上一页和下一页:
连续点击某个单元格,可以显示一个上拉菜单,通过这个菜单可以进行跟多的操作,例如编辑或删除当前订单:
现在我们结合具体代码,分别看看list.htm是如何实现新增订单、编辑订单和删除订单的:
删除订单
当我们在菜单中点击"删除订单"时,会显示一个对话框(第37行代码):
如果在对话框中单击确定按钮,会执行js函数del(第44行代码)。
del函数的代码为:
function del(){
location="list.htm?page=" + table1.pagenumber + "&deloid=" +
table1.primarykey;
}
假定我们正在访问第3页,选定订单的订单编号为161130078,此时table1.pagenumber等于2,table1.primarykey等于161130078,以上代码合成的链接为:
list.htm?page=2&deloid=161130078
服务器收到这个访问请求之后,触发HttpRequest事件,转给List函数负责处理,List函数执行第3行到第6行代码,删除编号为161130078的订单及其订单明细。
编辑订单
当我们在菜单中点击"编辑订单“时,会执行js函数edit,这个函数的代码为:
function edit(){
location="edit.htm?page=" + table1.pagenumber + "&oid=" +
table1.primarykey;
}
假定我们正在访问第3页,选定订单的订单编号为161130078,此时table1.pagenumber等于2,table1.primarykey等于161130078,以上代码合成的链接为:
edit.htm?page=2&oid=161130078
服务器收到这个访问请求之后,触发HttpRequest事件,转给Edit函数负责处理,Edit函数是如何处理以上访问请求的,在介绍Edit函数的时候会详细讲述。
增加订单
当我们单击"增加订单"按钮时,会调用js函数addnew,这个函数的代码为:
function addnew(){
location="edit.htm?page=" + table1.pagenumber;
}
假定我们正在访问第3页,此时table1.pagenumber等于2,以上代码合成的链接为:
edit.htm?page=2
服务器收到这个访问请求之后,触发HttpRequest事件,转给Edit函数负责处理,Edit函数是如何处理以上访问请求的,在介绍Edit函数的时候会详细讲述。