接收DataTable

HttpRequest事件有个WriteDataTable方法,用于向客户端发送DataTable,语法为:

WriteDataTable(DataTable)

WriteDataTable(SelectString, ConnectionName)

DataTable 要发送的一个现有DataTable
SelectString SelectString语句,据此生成一个DataTable发送给客户端。
ConnectionName 数据源名称

对应的HttpClient有个GetDataTable方法,用于接收服务端发来的DataTable。

一个例子

1、服务端项目的HttpRequest事件代码:

Dim Verified As Boolean
If
e.PostValues.ContainsKey("username") AndAlso e.PostValues.ContainsKey("password") Then
   
'实际开发的时候,请改为根据用户表验证身份
   
Dim username As String  = e.PostValues("username")
    Dim password As String  = e.PostValues("password")
    If username = "EP01" AndAlso password = "888" Then
        Verified  = True
    End
If

End
If
If
Verified = False Then
    e.AppendCookie("error",
"
用户身份验证失败!") '通过Cookie返回错误信息.
   
Return

End
If
Select
Case e.Path
    Case "query.htm"
        Dim scd As String  =
"select Top 100 * from
订单  Where 雇员 = '" & e.PostValues("username") & "'"
        If e.PostValues.ContainsKey("filter") Then
            scd = scd & " and (" & e.PostValues("filter") & ")"
        End If
        e.WriteDataTable(scd, "数据源名称")

End
Select

重要提示:

在合成表达式的时候,必要条件(只加载登录用户负责的的订单,这里是:雇员='EP01')和查询条件,必须按照以下格式合并:

必要条件 And (查询条件)

如果查询条件没有用括号括起来,那么用户可以很轻松地突破权限设置,获取所有数据。

2、在客户端项目新建一个窗口,插入一个Table和按钮,按钮的Click事件代码设置为:

Dim hc As New HttpClient("http://127.0.0.1/query.htm")
hc
.FormData.Add("username","EP01")
hc
.FormData.Add("password","888")
hc
.FormData.Add("filter","产品='PD01'")
Dim
dt As DataTable = hc.GetDataTable()
If
hc.rCookies.ContainsKey("error") Then
    MessageBox.show(hc.rCookies("error"),
"
错误" ,MessageBoxButtons.OK, MessageBoxIcon.Warning)
ElseIf
dt IsNot Nothing Then
    Tables(
"
窗口1_Table1").DataSource = dt
Else

   
MessageBox.Show("接收DataTable失败,原因未知!", "错误" ,MessageBoxButtons.OK ,MessageBoxIcon.Warning)
End
If

打开窗口,单击按钮,Table控件即可显示从服务端获取的数据。


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