Previous topicNext topic
Help > 使用指南 > 常用表功能 > 表扩展功能 >
数据加载

通常情况下我们可以通过表属性设置我们加载填充数据的方式。主要有以下几种:

先统一说明一下表属性设置的进入方式:在表的标题右键菜单中选择“表属性设置”。

在打开的表属性设置窗口中可以对多个参数进行设置,以达到填充不同类型数据的目的。

(为了方便说明,下面描述时,我会带上上图中标示出来的相应设置的编号。)

1、数据库基础表。这里就是直接加载一个数据库的基础表进行加载。我们只需要设置一下3号数据源名称、4号数据库表名即可。正常情况下1号数据填充类型会自动切换成TableDirect。此时一个正常带有主键的基础表加载就算设置完成了。但是,如果我们设置的基础表不包含主键,那么就必须再设置6号是否视图查询这个参数为True。

2、数据库视图。数据库视图的加载跟上面的数据库基础表基本一致,但是6号是否视图查询这个参数必须设置为True。

3、平台内视图。平台内视图指的是本平台提供的一个SQL视图设计管理所动态生成的SQL语句。这个功能的好处是可视化操作SQL语句,可以方便后期切换数据库,维护方便。我们这里只需要设置一下7号填充视图ID这一个参数即可。因为数据源这些信息都是包含在视图设置内的。

4、直接SQL语句。我们还可以通过直接写SQL语句的方式来加载数据。当然这个SQL语句我们就只能当作视图来处理了。所以我们需要设置:3号数据源名称、4号数据库表名、1号数据填充类型为Text、5号加载数据SQL语句、6号是否视图查询这几个参数。如果还想对这个SQL返回的表进行编辑保存功能的话,还需要设置2号视图编辑表。

5、带参数的SQL语句。有时候我们希望SQL语句中可以插入一些参数,这样可以筛选条件设置的更加具体,以提高查询的效率。下面我们就以一个示例给大家演示如何正确加载带参数的SQL语句。

首先我们可以跟上面的直接SQL语句一样设置:3号数据源名称、4号数据库表名、1号数据填充类型为Text、5号加载数据SQL语句、6号是否视图查询这几个参数。带参数的SQL语句如下。

Select * From  订单信息 Where 客户=@ClientName and 业务员=@salerName

如果想让用户在窗体打开之前自己输入SQL中的参数值,可以设置下面的参数。

打开窗体时会有下面的窗体弹出让用户设置传入参数。输入完点确定筛选即可正常加载数据。

我们还可以在系统菜单里写一段代码,在窗体打开之前先给表的参数用代码赋值。这样我们就可以直接加载指定参数返回的结果了。注意,此时自动弹窗让用户输入参数的“参数选择ID”就必须清空了,要不然还是会弹出窗口让用户输入参数。

Vb.Net
Dim para = New With {.ClientName = "客户01",.salerName="业务员02"}
Proj.CurrentMainGridParameters=para

C#
var para = new { ClientName = "客户01", salerName = "业务员02" };
Proj.CurrentMainGridParameters = para;

如果我们想通过代码重新设定传入的参数,然后重新加载表,该如何操作呢?我们以一个表菜单按钮中的代码作示例。

a.用代码直接指定参数的值。

Vb.Net
'定义要传入的新参数及值
Dim para = New With {.ClientName = "客户02",.salerName="业务员03"}
'获得表对象,此功能仅针对SmGrid表,目录树表不行
Dim tbl As SmGrid=Proj.CurrentClickedGridMenu.BaseGrid.BaseBaseGrid
'将新参数值传递进表
tbl.DataTableHelp.Parameters=para
'重新加载表
tbl.ReloadData()

C#
// 定义要传入的新参数及值
var para = new { ClientName = "客户02", salerName = "业务员03" };
// 获得表对象,此功能仅针对SmGrid表,目录树表不行
SmGrid tbl = Proj.CurrentClickedGridMenu.BaseGrid.BaseBaseGrid;
// 将新参数值传递进表
tbl.DataTableHelp.Parameters = para;
// 重新加载表
tbl.ReloadData();

b.弹窗让用户输入参数的值。这里需要利用到上面“参数选择ID”中的值。

Vb.Net
'定义要传入的新参数及值
Dim para = New With {.ClientName = "客户02",.salerName="业务员03"}
'获得表对象,此功能仅针对SmGrid表,目录树表不行
Dim tbl As SmGrid=Proj.CurrentClickedGridMenu.BaseGrid.BaseBaseGrid
'定义一个返回对象
Dim returnValue As FormReturnValue = New FormReturnValue()
'定义一个参数输入窗口
Dim frm As FilterAndParameterSetting = New FilterAndParameterSetting("46aa5738c65841e8a6eb5f476039494b", returnValue)
'如果用户正常设置了参数并确定
If frm.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
    '将新参数值传递进表
    tbl.DataTableHelp.Parameters=returnValue.ExtendedProperties
    '重新加载表
    tbl.ReloadData()
End If

C#
// 定义要传入的新参数及值
var para = new { ClientName = "客户02", salerName = "业务员03" };
// 获得表对象,此功能仅针对SmGrid表,目录树表不行
SmGrid tbl = Proj.CurrentClickedGridMenu.BaseGrid.BaseBaseGrid;
//定义一个返回对象
FormReturnValue returnValue = new FormReturnValue();
//定义一个参数输入窗口
FilterAndParameterSetting frm = new FilterAndParameterSetting("46aa5738c65841e8a6eb5f476039494b", returnValue);
if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK) //如果用户正常设置了参数并确定
{
    // 将新参数值传递进表
    tbl.DataTableHelp.Parameters = returnValue.ExtendedProperties;
    // 重新加载表
    tbl.ReloadData();
}

6、带参数的平台内视图。带参数的方式也跟上面一样使用。

7、存储过程。如果存储过程返回一个表的话,我们也可以使用此存储过程来加载数据。但是存储过程决定了它不能进行分页加载、后台目录树筛选。我们需要设置:3号数据源名称、1号数据填充类型为StoredProcedure、5号加载数据SQL语句直接设置为存储过程的名称、6号是否视图查询设置为True。如果还想对这个存储过程返回的表进行编辑保存功能的话,还需要设置2号视图编辑表。

8、带参数的存储过程。带参数的方式也跟上面一样使用。

9、针对目录树表的加载,我们还可以直接设置一下“目录树ID”即可。正常情况下数据填充类型会自动切换成EditTreeGrid。