Previous topicNext topic
Help > 开发指南 > SanMuGrid平台编程 > 主要对象 > SmGrid >
数据加载

我们使用表格主要就是为了让表格绑定上常规的二维表数据,并进行增、删、改、查,最后再进行保存。而加载二维表的方式有很多,下面我们就通过代码示例进行详细介绍。

主要通过两种方式,一种是通过Fill方法,另外一种是通过DataSource属性绑定数据。

Fill方法的语法:

Fill(SQLCommandString,SourceDatabase,fillSchema,fillData,commandType,parameters)

Fill(SQLCommandString,SourceDatabaseName,fillSchema,fillData,commandType,parameters)

  
参数名称  说明
SQLCommandString 必填参数,字符串类型,Sql语句。
SourceDatabase 必填参数,Database类型,填充的数据源。
fillSchema

可选参数,逻辑型,表示是否填充表结构。如果是基础数据表,表中有主键的话,填充表结构可以方便我们用Save方法直接保存数据修改。如果表中没有主键,或者SQL命令填充的是视图,则此参数只能填充为False。默认值为False。

fillData 可选参数,逻辑型,表示是否填充加载数据。如果想要把SQL语句中返回的表加载上就输入True,如果只想加载一个空表,则填False,默认值为True。
cmdtype

必填参数,CommandType枚举值之一,指定SQL语句的命令类型。CommandType型枚举包括以下可选值:

public enum CommandType
{
    //SQL文本
    Text = 1,
    //存储过程
    StoredProcedure = 4,
    //单单是表名
    TableDirect = 512
}

parameters 可选参数,sql语句中使用的参数对象。支持字典Dictionary(string,object)、IEnumerable(DbParameter)、匿名对象。默认为空,

Vb.Net
Dim tbl As SmGrid=Proj.Forms("员工管理").ControlDictionary()("tblMain")
Dim strSQL As String="select * from EmployeeInfo"
Dim db As Database=Proj.SysDataFactory("UserDB")
'方法一:通过Fill填充数据
tbl.Fill(strSQL,"UserDB",True,True)
'还可以直接使用Database类型
tbl.Fill(strSQL,db,True,True)
'如果不希望编辑、保存数据,可以不加载数据结构
tbl.Fill(strSQL,db)
'这里也可以搞带参数的填充
'创建一个匿名对象,保存参数
Dim para = New With {.ID = "U000000003"}
tbl.Fill("select * from UserInfo where ID=@ID",db,True,True,CommandType.Text,para)

'方法二:通过DataSource绑定DataTable
Dim dt As DataTable=db.ExecuteDataTable(strSQL,True,True)
'直接绑定
tbl.DataSource=dt

'方法三:通过DataSource绑定DataTableHelp
Dim dtp As DataTableHelp=db.ExecuteDataTableHelp(strSQL,True,True)
'直接绑定
tbl.DataSource=dtp

C#
SmGrid tbl = Proj.Forms["员工管理"].ControlDictionary()["tblMain"] as SmGrid;
string strSQL = "select * from EmployeeInfo";
Database db = Proj.SysDataFactory["UserDB"];
// 方法一:通过Fill填充数据
tbl.Fill(strSQL, "UserDB", true, true);
// 还可以直接使用Database类型
tbl.Fill(strSQL, db, true, true);
// 如果不希望编辑、保存数据,可以不加载数据结构
tbl.Fill(strSQL, db);
// 这里也可以搞带参数的填充
// 创建一个匿名对象,保存参数
var para = new { ID = "U000000003" };
tbl.Fill("select * from UserInfo where ID=@ID", db, true, true, CommandType.Text, para);

// 方法二:通过DataSource绑定DataTable
DataTable dt = db.ExecuteDataTable(strSQL, true, true);
// 直接绑定
tbl.DataSource = dt;

// 方法三:通过DataSource绑定DataTableHelp
DataTableHelp dtp = db.ExecuteDataTableHelp(strSQL, true, true);
// 直接绑定
tbl.DataSource = dtp;

上面的代码中,关于获得DataTableDataTableHelp的方式,我们可以返回相应的帮助部分,同样可以使用很多方式加载表数据。如果想结合数据加载后,再加载表属性设置,还可以参考“LoadColInputRule”。如果想结合更多参数加载和更多类型的加载的可以参考“数据加载