传递主键和页码

上一节说到,要实现通过菜单编辑和删除行,必须给客户端传递行的主键和页码。

传递页码很简单,生成表格的时候,直接将其PageNumber属性设置为当前页码即可。

传递主键要分两种情况,如果是CreateFromDataTable和CreateFromTable自动生成表格,那么设置表格的Primarykey为主键列的列名即可;如果是手工编码生成,则需要逐行设置主键值。

本节先介绍第一种情况,第二种情况留待下一节讲述。

在编写JavaScript代码的时候,表格同样有pagenumber和primarykey(注意是小写),分别用于返回当前页码和选定行的主键值。

一个例子

HttpRequest事件代码:


Select
Case e.Path
    Case "list.htm"
       
'
获取要显示的页
        Dim page As Integer = 0
'
默认page0,显示第一页
        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按着上述操作后截图:


本页地址:http://www.foxtable.com/mobilehelp/topics/0118.htm