传递主键和页码
上一节说到,要实现通过菜单编辑和删除行,必须给客户端传递行的主键和页码。
传递页码很简单,生成表格的时候,直接将其PageNumber属性设置为当前页码即可。
传递主键要分两种情况,如果是CreateFromDataTable和CreateFromTable自动生成表格,那么设置表格的Primarykey为主键列的列名即可;如果是手工编码生成,则需要逐行设置主键值。
本节先介绍第一种情况,第二种情况留待下一节讲述。
在编写JavaScript代码的时候,表格同样有pagenumber和primarykey(注意是小写),分别用于返回当前页码和选定行的主键值。
一个例子
HttpRequest事件代码:
Select
Case e.Path
Case "list.htm"
'获取要显示的页
Dim page
As Integer =
0
'默认page为0,显示第一页
Dim pageRows
As Integer =
15
'每页15行
If e.GetValues.ContainsKey("page")
Then
'如果地址中有page参数
Integer.TryParse(e.GetValues("page"),
page)
'提取page参数
End If
Dim
StartRow As
Integer = page *
pageRows + 1
'此页第一行
Dim EndRow
As Integer =
(page + 1) *
pageRows
'此页最后一行
'获取该页数据
Dim cmd
As New
SQLCommand
cmd.ConnectionName
= "orders"
'记得设置数据源名称
cmd.CommandText
= "Select Count(*) From {订单}"
Dim Count
As Integer =
cmd.ExecuteScalar()
'获取总的行数
cmd.CommandText
= "Select * From (Select
Row_Number() Over(Order by
日期)
As [NO.],[_Identify],产品,客户,数量,单价,日期
From 订单)
As a "
cmd.CommandText
= cmd.CommandText
& " Where [NO.]>= "
& StartRow
& " And [NO.] <= "
& EndRow
Dim dt
As DataTable
= cmd.ExecuteReader
'生成菜单
Dim wb
As New
WeUI
With wb.AddActionSheet("","menu")
'设计菜单
.Add("mnudAdd",
"增加订单").Attribute="onclick=""alert('增加订单')"""
.Add("mnuEdit",
"编辑订单").Attribute
="onclick=""alert('编辑订单
页码:'+table1.pagenumber+
'主键:'+
table1.primarykey)"""
.Add("mnuDelete",
"删除订单").Attribute
="onclick=""alert('删除订单
页码:'+table1.pagenumber+
'主键:'+
table1.primarykey)"""
.Add("mnuCancel","取消","",True)
End With
'根据此页数据生成网页
With wb.AddTable("","Table1")
.PageNumber =
page '设置页码
.Primarykey =
"_Identify" '设置主键
.ActiveSheet =
"menu" '设置菜单
.CreateFromDataTable(dt)
End With
With
wb.AddButtonGroup("","btg2",
False)
If page
> 0 Then
.Add("btnPrev",
"上一页","","List.htm?page="
& page -
1)
End
If
If
Endrow < count
Then
.Add("btnNext",
"下一页","","List.htm?page="
& page +
1)
End If
End With
e.WriteString(wb.Build)
End
Select
因为要传递主键给客户端,所以select语句必须将主键列包括进来,接下来你要做的知识指定页码和主键:
With
wb.AddTable("","Table1")
.PageNumber =
page '设置页码
.Primarykey =
"_Identify" '设置主键
.ActiveSheet =
"menu" '设置菜单
.CreateFromDataTable(dt)
End
With
需要注意的是:页码、主键和菜单名,都需要在执行CreateFromDataTable之前设置好,否则无效。
现在你在客户端浏览器连续点击某行,会出现菜单,在点击菜单中的命令,会显示当前页码和当前行的主键。
下图是我在iPhone按着上述操作后截图: