相关属性和方法
DataTable提供了以下属性和方法,用于在运行过程中动态加载数据。
名称 | 类型 | 说明 |
LoadFilter | 属性 | 字符型,用于设置重新加载数据的条件表达式,语法和所使用的数据源有关。 |
LoadOrder | 属性 | 字符型,指定加载数据的顺序。 |
LoadTop | 属性 | 字符型,指定要加载的行数,如果是分页加载,则用于指定每页的行数。 |
LoadReverse | 属性 | 逻辑型,是否倒序加载,即是否先加载新数据,此属性只有在分页加载的时候才有效。 |
LoadOver | 属性 | 字符型,用于指定分页加载依据列。 |
LoadPage | 属性 | 整数型,指定要加载的页号。 |
TotalPages | 属性 | 整数型,返回分页加载时,总的可加载总页数。 |
TotalRows | 属性 | 整数型,返回分页加载时,后台数据表符合当前加载条件的总行数。 |
Load | 方法 | 加载数据。 |
示例一
首先利用DataTable的LoadFiler属性设置加载条件,然后执行Load方法重新加载数据。
这样我们就可以根据用户输入的条件,重新加载数据。
例如:
DataTables(
"订单").LoadFilter = "[日期] = #" & Date.Today & "#"上面的代码将从后台中加载今天的订单。
需要注意的是,LoadFilter采用的是SQL语法,和常规表达式的语法有所不同,且不同的数据源,语法也会有细节差异。
例如对于SQL SERVER数据源,日期必须用单引号括起来:
DataTables(
"订单").LoadFilter = "[日期] = '" & Date.Today & "'"请参考:SQL表达式的语法差异。
示例二
可以用LoadTop属性设置要加载的行数,通常和LoadOrder配合使用。
例如加载最近的100条订单:
DataTables(
"订单").LoadTop = "100"需要注意的是,上述代码加载进来的数据并不会按照日期排序,只是按日期排序加载最近的100条订单而已,至于加载进来后的数据的顺序,由Table的Sort属性决定。
我们可以加上关键词Percent,表示按百分比加载。
例如按日期顺序,加载产品为PD01的最近的20%的订单:
DataTables(
"订单").LoadTop = "20 Percent"提示:按百分比加载对于Oracle数据源无效,因为Oracle不支持Percent关键词。
示例三
如果一个表的行数非常多,可以考虑分页加载,此时用LoadTop指定每页的行数,用LoadPage要加载的页号。
下面的代码每页加载50个订单,加载第三页,注意页号从0开始,所以第三页的编号为2:
With DataTables(
"订单")需要注意的是分页加载不能按百分比,只能按行数,例如下面的代码,始终加载的都是前10%的订单,而不是第三个10%的订单:
With DataTables(
"订单")示例四
分页加载的时候,默认是根据主键分页的,可以用LoadOver属性改变分页列。
例如:
With
DataTables("订单")
.LoadTop =
20
.LoadPage =
3
.LoadOver =
"日期"
.Load()
End
With
表示根据日期列分页,每页20行,加载第四页。
我们的建议是:尽量采用主键列或者其他值不会重复的列(如身份证号码),作为分页依据列,因为如果分页依据列的值有重复,将会影响分页的准确性,例如上面的代码根据日期分页,每页显示20行,如果某一天有40个订单,那么这40个订单会显示在同一个页面中,而不会按我们期望的那样分成两页显示。
示例五
分页加载默认是顺序,如果希望倒序加载,可以将LoadReverse属性设置为True。
例如按日期分页倒序加载,也就是最新的数据在前:
With
DataTables("订单")
.LoadTop =
20
.LoadPage =
3
.LoadOver =
"日期"
.LoadReverse = True
.Load()
End
With
需要注意的是,经常有用户用LoadOrder属性来设置分页加载的顺序,这是无效的。
要记住:分页加载的时候,用LoadOver和LoadReverse来设置分页列和加载顺序,非分页加载的时候,用LoadOrder设置加载顺序。
示例六
在分页加载时,可以用TotalPages属性返回总的可加载总页数,这样我们就可以设计出上一页、下一页、第一页、最后一页这样的加载按钮。
在使用此属性之前,必须先设置LoadTop属性,如果还有加载条件,也得先设置LoadFilter属性,才能返回正确的页数。
例如:
Dim
p As Integer = 3示例七
如果你只想按照目前的加载设置,重新加载表,也就是同步表,只需:
DataTables("订单").Load
再例如重新加载所有表
For Each
dt As DataTable In DataTables在默认的情况下,Load在加载数据之前,会先保存现有数据。
Load有一个可选逻辑参数,如果设置为False,将不保存现有数据,例如:
DataTables("订单").Load(False)