xForm应用开发手册

 

xForm应用开发手册

1          基本包含文件及简介

文件名

方式

功能简介

Basic.jse

Client/Server

基本函数库

Control.jse

Client

基本控件的相关函数库(包括整个页面的初始化等功能)

Dataset.jse

Client

客户端数据集的相关函数库

Table.jse

Client

数据表格的相关函数库(包括表格初始化、增删表格行等功能)

Editor.jse

Client

数据编辑控件的相关函数库

Dropdown.jse

Client

实现动态数据下拉窗口的函数库

Menu.jse

Clent

实现工具条菜单和弹出式菜单的函数库

Tree.jse

Client

实现树状列表构件的函数库

Svr_obj.jse

Server

实现在服务器端生成数据表格及客户端数组的函数库

Client_ini.jse

Client

定义用于客户端的配置信息

Server_ini.jse

Server

定义用于服务器端的配置信息

2          开发规范

2.1         文档结构

xForm的基本原理如下:

根据上图可知,xForm页面中的代码可分为Server端代码和Client端代码。下面是一个最基本的xForm页面:

<%@ language=VBScript %>
<html>
<head>

<!-- xForm
的包含文件(使用xForm的页面必须包含这些代码文件) -->
<link rel="stylesheet" type="text/css" href="_xForm_Library/control.css"></link>
<script language="JScript.Encode" src="_xForm_Library/client_ini.jse"></script>
<script language="JScript.Encode" src="_xForm_Library/basic.jse"></script>
<script language="JScript.Encode" src="_xForm_Library/control.jse"></script>
<script language="JScript.Encode" src="_xForm_Library/dataset.jse"></script>
<script language="JScript.Encode" src="_xForm_Library/table.jse"></script>
<script language="JScript.Encode" src="_xForm_Library/editor.jse"></script>
<script language="JScript.Encode" src="_xForm_Library/dropdown.jse"></script>
<script language="JScript.Encode" src="_xForm_Library/server_ini.jse" runat="server"></script>
<script language="JScript.Encode" src="_xForm_Library/basic.jse" runat="server"></script>
<script language="JScript.Encode" src="_xForm_Library/svr_obj.jse" runat="server"></script>

<%

'如果此页面使用了外部的XML定义文件,则可用下面的命令调用该文件

initXMLFile "D:\Sample.xml"

%>


<%
sql="select * from c_employee where dept_id='D11'"
'
创建一个本地记录集
set dataset_employee = createAdoDataset("dataset_employee", sql, "Demo_ConnectionString", 0)
dataset_employee.init
%>
</head>


<body language="javascript" onload="
initDocument();//页面初始化">

<%'
创建绑定到记录集数据导航条
set pilot=createDataPilot("pilot_employee","dataset_employee")
pilot.init
%>

<P>
<!--
以下是一个字段标签和一个数据编辑框 -->
<label
attrib="fieldlabel" datafield="employee_name" dataset= "dataset_employee"></label>
<input
attrib="editor" datafield="employee_name" dataset= "dataset_employee">
</P>

<%'
创建绑定到记录集数据表格
set table=createDataTable("table_employee","dataset_employee")
table.init
%>
</body>
</html>
<%'
销毁由xForm自动产生的临时对象

destroyXFormObjects() %>

 

2.2         配置Client_ini.js文件

配置说明:

变量名

类型

含义说明

xForm_Library_path

String

指定xForm文件存放的URL,以便于应用在运行过程中可以随时定位到xForm的文件。

如:"/ xForm_Demo/_xForm_Library/";

showSubmitCommand

Bool

是否需要的保存数据之前提示要提交的字符串,以便于调试。

disableSystemContextMenu

Bool

是否禁用用户界面上的右键菜单。

其它

String

其它变量均是在xForm中用到的字符串表,可能根据您的需要予以调整。

2.3         配置Server_ini.js文件

Server_ini.js主要用于定义整个应用中经常用到的数据库的联结方式以便于进行统一管理。在该文件中有四个预定义的常量,含义如下:

变量名

类型

含义说明

Dictionary_ConnectionString

String

数据字典库的连接字符串。

(数据字典是指将应用数据库中各表和字段的属性存放在特定的数据库中。xForm中的本地记录集、字段标签、数据表格都支持自动从数据字典中提取字段的标签等信息)

RptTemplate_ConnectionString

String

报表模版库连接字符串。

RptData_ConnectionString

String

报表数据库连接字符串。

useDBDictionary

Bool

是否使用xForm的数据字典功能

Server_ini.js文件的示例:

//用户自定义

var Demo_ConnectionString = "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATASOURCE=" + Server.MapPath("/baoyilei/Product/xForm/Demo/DemoData.mdb");

//数据字典连接字符串

var Dictionary_ConnectionString = Demo_ConnectionString;

//后台属性连接字符串

var xFormProperty_ConnectionString = Demo_ConnectionString;

//报表模版连接字符串

var RptTemplate_ConnectionString = Demo_ConnectionString;

//报表数据连接字符串

var RptData_ConnectionString = Demo_ConnectionString;

2.4         处理包含文件

根据您的需要在Asp中包含必要的Javascript文件。

包含方法如下:

-         首先应当分别在Client端和Server端包含Client_ini.jsServer_ini.js这两个配置文件。

-         Client <SCRIPT LANGUAGE=javascript SRC=”../ _xForm_Library /basic.js”> </SCRIPT>

-         Server <SCRIPT LANGUAGE=javascript RUNAT=Server SRC=”../ _xForm_Library /basic.js”> </SCRIPT>

-         一般来讲,在Clientbasic.jscontrol.js时必须包含的文件,在Server端如果要使用svr_dataobj.js那么basic.js必须被包含。

-         除此之外,如果您包含标准控件的风格定义文件Control.css。具体的包含方式如:<LINK rel=”stylesheet” type=”text/css” href=”../ _xForm_Library /control.css”>

2.5         页面初始化

windowonload事件中添加对initDocument的调用。该函数可在页面加载时自动完成必要的页面初始化工作。

函数

说明

[void] initDocument ()

Client端的脚本中调用此函数以进行页面初始化。此函数应尽量在使用页面元素之前调用,因此一般应在window对象的onload事件中调用。

2.6         加入xForm构件

xForm对象事实上都是通过扩展标准的DHtml对象而获得的,也可以将此种扩展视为一种变相的继承。例如本地记录集是从Object继承而来、数据表格是从Table继承而来。

您可以直接在HTML中编写普通的xForm对象,但如果要加入复杂的xForm对象(包括:本地记录集、数据表格、导航条、树状列表、多页控件、各种菜单)应当使用系统已提供的方法,这些方法将在后面的的部分中逐一介绍。

编写普通的xForm对象的示例:

<INPUT type=”text” id=text1 name=text1 attrib=editor dataset=dataset_employee datafield=company_id>

其中attrib属性指定该控件为自定义编辑器、dataset属性指定要绑定的记录集的ID。(如果要在运行期修改数据构件的记录集属性,请不要直接将记录集的ID赋给该属性,而应当使用setElementDataset函数或将记录集对象赋给该属性。)

           加入复杂的xForm对象的示例:

<%

set table = createDataTable("table_employee", "dataset_employee")

table.fields="employee_name,dept_id,degree,married,cmnt"

table.init

%>

上面的代码创建了一个与dataset_employee记录集绑定的数据表格。

2.7         开发自定义的下拉窗口

待补充。

2.8         使用xml定义文件辅助xForm页面的开发

请使用xForm.xsd文件作为Schema定义新的XML文件。详细内容待补充。

3          附加属性及用户事件的使用方法

3.1         xForm对象的Attrib属性

利用该属性使xForm专用的xForm对象区分于普通的DHTML对象。在页面初始化时initDocument() 将根据该属性对元素进行不同的初始化处理。如果使用createDataTable等函数生成xForm对象,那么Attrib属性将被自动指定,否则您需要在HTML中直接为元素指定其Attrib属性的值,例如:

<LABEL attrib=editor dataset=dataset_employee datafield=company_id></LABEL >

3.2         xForm对象的附加属性

对于xForm对象的附加属性,您可以直接访问该属性也可以通过getAttribute (propertyname)setAttribute (propertyname, value)方法来访问。

如要使用text1datafield属性,可使用text1.datafield来访问,也可以使用text1.getAttribute(“datafield”)读取属性值、使用text1.setAttribute(“datafield”, “employee_id”)设置属性值。

3.3         记录集对象的属性和方法

记录集对象的属性和方法可直接访问。

如要使用dataset_employeerecord属性,可使用dataset_employee.record读取属性值。

如要使用dataset_employeemoveFirst()方法,可使用dataset_employee.moveFirst()来调用。

3.4         用户事件

通过定义对象ID和事件名合成的函数来使用用户事件。

如要使用dataset_employeebeforeUpdate事件,可定义如下函数:

function dataset_employee_beforeUpdate(dataset){

       … …

}

同时可以通过定义函数的返回值向系统传递信息。

4          pArray双向链表对象

pArray双向链表对象由Object扩展得来,是本地记录集等对象的基类。

4.1         创建pArray对象

创建pArray对象的方法如下:

var p=new pArray();

4.2         pArray的属性

(关于表格中[模式]的说明:c表示可在Client端使用、s表示可在Server端使用、r表示属性值可被读取、w表示属性值可被修改。如:c(r)表示此属性可在Client端读取,但不能被修改)

属性

类型

模式

说明

firstUnit

object

c(r)

链表中的第一个单元

lastUnit

object

c(r)

链表中的最后一个单元

length

int

c(r)

链表中当前的单元数量

相关函数

模式

说明

[void] pArray_clear(

[pArray] pArray

)

c

清除链表中的所有单元

[void] pArray_insert(

[pArray] pArray,

[enum] mode,

[unit] unit,

[unit] newUnit

)

c

向链表中插入一个单元

参数说明:

-         pArray 要操作的链表对象

-         mode 插入方式。取值范围(”begin”, ”before”, “after”, “end”)分别表示在在所有单元之前插入、在参照单元之前插入、在参照单元之后插入、在所有单元的最后追加。如果不指定此参数的值,系统将默认按”end”方式插入。

-         unit 参照单元。对于”begin””end”两种插入方式可以不指定此参数的值。

-         newUnit 要插入的单元对象

[void] pArray_insertArray(

[pArray] pArray,

[enum] mode,

[unit] unit,

[pArray] subArray

)

c

向链表中插入一个链表

参数说明:

-         pArray 要操作的链表对象

-         mode 插入方式。取值范围(”begin”, ”before”, “after”, “end”)分别表示在在所有单元之前插入、在参照单元之前插入、在参照单元之后插入、在所有单元的最后追加。如果不指定此参数的值,系统将默认按”end”方式插入。

-         unit 参照单元。对于”begin””end”两种插入方式可以不指定此参数的值。

-         subArray 要插入的pArray对象

[void] pArray_delete(

[pArray] pArray,

[unit] unit

)

c

从链表中删除一个单元

参数说明:

-         pArray 要操作的链表对象

-         unit 要删除的单元对象

[void] pArray_ex_insert(

[pArray] pArray,

[any] data

)

c

向链表中插入数值。该函数会首先搜索链表中是否已存在相同数值的单元,如果没有,则自动向链表中插入一个新的单元,并且将数值赋给该单元。

参数说明:

-         pArray 要操作的链表对象

-         data 要插入的数值

[void] pArray_ex_delete(

[pArray] pArray,

[any] data

)

c

从链表中删除某数值。该函数会首先搜索链表中是否已存在相同数值的单元,如果有,则将该单元从链表中删除。

参数说明:

-         pArray 要操作的链表对象

-         data 要删除的数值

 

4.3         pArray单元的属性

属性

类型

模式

说明

prevUnit

object

c(r)

该单元在链表中的下一个单元

nextUnit

object

c(r)

该单元在链表中的上一个单元

data

any

c(rw)

该单元中保存的数据

5          Client端数据对象

Client端记录集是值是扩展的pArray对象,因此它具有pArray的全部属性与方法。记录集中又包含了字段集对象用于存储记录集的字段信息。

 

5.1         创建Client端记录集

您可以在ASP文件中通过下面的三个方法创建记录集:

函数

模式

说明

[object] createDataset

(

[string] ID,

[string] fields

)

s

创建Client端记录集,并返回临时的Server端记录集对象。

参数说明:

-         ID 记录集的ID

-         fields 指定新创建的记录集中包含的字段,各自端名间以 , 分隔。如:field1,field2,…

[object] createAdoDataset

(

[string] ID,

[string] sql,

[string] conn_id,

[int] pageSize,

[string] tableName

)

s

创建Client端记录集,并返回临时的Server端记录集对象。

参数说明:

-         ID 记录集的ID

-         sql SQL命令或表名等,该参数将直接传给系统内部生成的ADO.Recordset对象。

-         conn_id 数据库的连接字符串的标识。该标识的实质是在Server_ini.js中定义相应连接字符串的变量名。并且该标示最终将被输出到Client端已备本地记录集下载数据时使用,为了安全起见此处不直接使用连接字符串。

-         pageSize 记录集每页的记录数,即每次下载的记录数。

-         tableName 该记录集对应的缺省表名。

[object] createXMLDataset

(

[string] ID,

[string] fileUrl

)

s

创建Client端记录集,并返回临时的Server端记录集对象。

参数说明:

-         ID 记录集的ID

-         XML文件的URL

 

在调用了以上三个函数之后,您可以利用该函数返回的对象修改记录集和字段的属性,最后调用init()函数。其中对记录集中的字段对象,可以通过fields属性来访问,详细信息请参考。例如:

<%

sql=”select * from WEB_ELEMENT”

set dataset_element = createAdoDataset(“dataset_element”, sql, “Conn_web_app_ConnectionString”, 20, “web_element”)

dataset_element.keyFields=”element_id”

dataset_element.fields.element_id.label=”页面元素

dataset_element.fields.elementtype_id.label=”元素类型

dataset_element.fields.cmnt.label=”注释

dataset_element.fields.parent_element_id.visible=false

dataset_element.fields.app_id.visible=false

dataset_element.fields.page_id.visible=false

dataset_element.init

%>

 

5.2         记录集的属性及方法

属性

类型

模式

说明

bof

bool

c(r)

是否要前进到记录集的顶端

connection

Adodb.connection

s(r)

调用createAdoDataset后,系统自动生成的connection对象将被保存在此属性中。

connection

string

c(r)

server端使用的连接字符串的标识。该标识的实质是在Server_ini.js中定义相应连接字符串的变量名。

dataString

string

s(rw)

在调用记录集的Init()方法时,Init会把记录集中的所有数据转换成一个特定格式的字符串并传到Client端。如果在此之前您为dataString属性赋值,那么Init将直接使用dataString的值作为记录集数据。如果将dataString属性的值社为””,那么记录集中的数据将不会被下载到Client端。

其格式说明如下:

-         记录间以”;”分隔

-         记录内部各字段的内容以”,”分隔

注意:以上格式中的每一小段都是经Encode运算后产生的编码,以防止其内容与分隔符混淆。

detailDatasets

pArray

c(r)

从表列表,此属性仅在使用主从表功能时有效。

如果需要建立主从关系或修改此属性的值,您可以使用setMasterDataset方法。

detailSql

string

s(rw)

c(r)

系统用于下载从表数据的SQL命令。

该命令中可以下列的方法来表示主表关键字段的值:select * from employee where dept_id=’[dept_id]’其中[dept_id]在使用前将被具体的字段值的内容替代,如果dept_id的值为001’,则系统实际使用的命令为:select * from employee where dept_id=’001’

此属性也可以与beforeLoadDetail事件配合使用,在每次下在数据之前设置正确的detailSql

注意:在上例中由于dept_id是字符型字段,因此在[dept_id]的前后应有两个单引号。而对于数值型字段则不应该被包含在引号中。

disableControlCount

int

c(r)

记录集被执行禁止刷新操作的计数器。

参阅disableControl ()enableControl ()方法

disableEventCount

int

c(r)

记录集被执行禁止触发用户事件的计数器。

参阅disableEvent ()enableEvent ()方法

editors

pArray

c(r)

与此记录集绑定的数据控件列表,此属性仅在运行期可用。

eof

bool

c(r)

是否已前进到记录集的顶端

fields

object

s(r)

ASP中用于访问Server端临时记录集对象中的字段对象,使用的方法如下:

通过此命令dataset1.fields.field1可以访问到dataset1中的field1字段对象。

fields

object

c(r)

对应的字段集对象

filtered

bool

c(rw)

表示记录集当前是否使用了过滤功能。

当该属性的值为true时,系统会在判断每条记录的可见性时自动触发onFilterRecord事件。

id

string

s(rw) c(r)

记录集的ID

keyFields

string

s(rw)c(rw)

数据更新时使用的主键字段列表,多个字段名之间以”,”分隔。

例如:dept_id=001,employee_id表示记录集有两个主键字段dept_idemployee_id,其中dept_id的值为001(即在更新时系统认为dept_id的值总是001,当您按此方法指定主键字段时,dept_id可以不是一个记录集中真实存在的字段)

如果此属性值未指定,则系统将使用所有字段作为主键字段。

length

int

c(r)

记录集中的总记录数。

注意:此记录数包括无效的记录。

masterLinks

array

s(rw)

c(r)

与主表的连接方式,此属性仅在使用主从表功能时有效。

该数组的每一个单元都是一个连接对象,此对象拥有下列属性

-         master_field 主表中的连接字段名

-         detail_field 从表中的连接字段名

masterDataset

object

s(rw)

c(r)

主表对象,此属性仅在使用主从表功能时有效。

如果需要建立主从关系或修改此属性的值,您可以使用setMasterDataset方法。

当主从关系建立后,从表中将仅显示与主表当前记录对应的记录,具体的对应方式由links属性决定。

在通常情况下,当主表的当前记录改变时,从表中的记录将自动刷新。但是当主表被禁止刷新时,从表中的记录将不会自动刷新,此时可以调用dataset_loadDetail方法来手工刷新从表的记录。

注意:masterDatasetpageSize属性不要同时使用。

modified

bool

c(r)

记录集中是否存在未被确认的修改。可使用此属性来判断记录集的当前记录是否属于被修改状态,当记录被确认后改状态的值将被置为false

pageSize

int

s(rw)

c(r)

记录集每页的记录数,即记录集每次下载的记录数

readOnly

bool

s(rw)

c(r)

记录集是否只读

如果要修改此属性的值建议使用setReadOnly方法

record

object

c(r)

记录集的当前记录

recordset

Adodb.recordset

s(r)

c(r)

调用createAdoDataset后,系统自动生成的recordset对象将被保存在此属性中。

sortFields

string

c(r)

保存记录集当前的排序表达式。

排序表达式的格式定义如下:[+/-]字段1, [+/-]字段2, [+/-]字段3, …;以 + - 表示正序排序和倒序排序,其中 + 可以省略。

例如:

Dept_id,-Age 表示先按Dept_id排序再按Age倒排。

注意:

-         当该属性的值为”#custom时表示自定义排序方式,此时系统将触发onCompareRecord事件来确定记录集的排序方式。

-         该属性为只读属性。请不要直接为此属性赋值,应通过sort方法为记录集定义排序方式。

sql

string

s(rw)

c(r)

server端使用的sql命令

state

enum

c(r)

记录集的当前状态。

取值范围如下:

-         none 无状态

-         insert 插入状态

-         modify 修改状态

参阅onstatechanged事件

tableName

string

s(rw)

c(rw)

缺省数据库表名,当记录集最终被提交时将会用到此表名

totalPage

int

s(r)

c(r)

记录集的总页数

updateFields

string

s(rw)

c(rw)

待更新的字段列表,多个字段名之间以”,”分隔。

例如:dept_id=001,employee_name表示记录集有两个更新字段dept_idemployee_name,其中dept_id的值为001(即在更新时系统认为dept_id的值总是001,当您按此方法指定更新字段时,dept_id可以不是一个记录集中真实存在的字段)

如果此属性值未指定,则系统将使用所有字段作为待更新字段。

window

object

c(r)

记录集隶属的window对象

tag

any

s(rw)

c(rw)

用户自定义信息

方法

模式

说明

[field] addField(

[string] fieldname

)

c

向记录集中追加一个新字段

参数说明:

-         fieldName 要追加的字段名或字段序号

-         返回值为新的字段对象

注意此方法只能在记录集被初始化(initDataset)之前使用。可在onInitDataset事件中使用此方法在,此记录集中添加自定义的字段。

[field] getField(

[string] fieldname

)

c

获取字段对象

参数说明:

-         fieldName 要取得的字段名或字段序号(注意:此次序号是从0开始的序号)

-         返回值为字段对象

[any] getFieldValue(

[string] fieldname

)

c

读取当前记录中的字段值

参数说明:

-         fieldName 要读取的字段名或字段序号(注意:此次序号是从0开始的序号)

-         返回值为读取到的字段值

[string] getFieldText(

[string] fieldname

)

c

读取当前记录中某字段的显示文本。即转换成文本的字段值

参数说明:

-         fieldName 要读取的字段名或字段序号(注意:此次序号是从0开始的序号)

-         返回值为读取到的字段值

[void] setFieldValue(

[string] fieldName,

[any] value

)

c

设置当前记录中的字段值

参数说明:

-         fieldName 要设置的字段名或字段序号(注意:此次序号是从0开始的序号)

-         value 要设置的值

[record] getFirstRecord()

c

获得记录集的第一条有效记录

[record] getLastRecord()

c

获得记录集的最后一条有效记录

[void] setRecord(

[record] record

)

c

设置记录集的当前记录

参数说明:

-         record 要设置为当前记录的记录对象

[void] move(

[int] count

)

c

以当前记录为参照滚动记录集

参数说明:

-         count 想对于当前记录的滚动行数。当count<0时表示前上滚动。

[void] moveFirst()

c

将最顶端的记录设置为当前记录

[void] movePrev()

c

将上一条的记录设置为当前记录

[void] moveNext()

c

将下一条的记录设置为当前记录

[void] moveLast()

c

将最末端的记录设置为当前记录

[record] find(

[array] fieldNames,

[array] values,

[record] startRecord

)

c

精确搜索记录

参数说明:

-         fieldNames要进行比对的字段列表

-         values要进行比对的值列表

-         startRecord 指定从此记录开始搜索。如果不定义该参数,将从第一条记录开始搜索。

-         如果查找到匹配的记录,该函数的返回值为该记录对象,否则返回null.

调用方法如下:

var record=dataset. Find([id, age], [“byl”, 24]);

if (record) then dataset.setRecord(record);

[record] locate(

[string] fieldName,

[string] value,

[record] startRecord

)

c

模糊搜索记录

参数说明:

-         fieldName要进行比对的字段

-         value要进行比对的值

-         startRecord 指定从此记录开始搜索。如果不定义该参数,将从第一条记录开始搜索。

-         如果查找到匹配的记录,该函数的返回值为该记录对象,否则返回null.

调用方法如下:

var record=dataset. Locate(id, “byl”);

if (record) then dataset.setRecord(record);

[void] sort(

[string] sortFields

)

c

对记录集的记录进行排序

参数说明:

-         sortFields 排序表达式。参照属性sortFields的说明。当此参数的值为空时,表示不对记录集进行排序即按照记录集的原始顺序排序。

[void] insertRecord(

[enum] mode

)

c

插入一条空记录

参数说明:

-         mode 插入方式,取值范围(”begin”, ”before”, “after”, “end”)分别表示在所有记录之前插入、在当前记录之前插入、在当前记录之后插入、在所有记录的最后追加。

[void] deleteRecord()

c

删除当前记录

[void] cancelRecord()

c

撤销对当前记录的修改

[void] updateRecord()

c

确认对当前记录的修改

[void] copyRecord(

[record] record

)

c

将指定记录的内容复制到记录集的当前记录中

参数说明:

-         record 要复制的记录

[void] disableControl ()

c

禁止记录集向与之绑定的数据控件发送消息。

执行该命令后,相关数据控件将不再动态体现记录集中记录的变化。

该命令可被连续执行多次,同样也必须执行相同次数的enableControl ()命令后记录集才会被解锁。

[void] enableControl ()

c

允许记录集向与之绑定的数据控件发送消息

[void] disableEvent()

c

禁止记录集触发用户事件。

该命令可被连续执行多次,同样也必须执行相同次数的enableEvent ()命令后记录集才能重新激活用户事件。

[void] enableEvent()

c

允许记录集触发用户事件。

[void] RefreshControls()

c

刷新所有与该记录集相关的数据控件。

[void] SetReadOnly(

[bool] readOnly

)

c

设置记录集的只读属性

参数说明:

-         readOnly 逻辑值,表示是否只读

[void] setFieldReadOnly(

[string] fieldName,

[bool] readOnly

)

c

设置字段的只读属性

参数说明:

-         fieldName 要设置的字段的字段名

-         readOnly 逻辑值,表示是否只读

[void] loadpage(

[int] pageIndex

)

c

下载一页数据

参数说明:

-         pageIndex要下载的页号

[void] loadDetail()

c

下在当前记录对应的从表数据。由于当主表处于disableControl ()状态时,系统不会自动下载从表中的数据。因此,当执行enableControl ()后,您可能需要手工调用此方法。

[bool] isPageLoaded(

[int] pageIndex

)

c

判断指定页号的数据是否已下载

注意:该页码从1开始计数。

[void] moveToPage(

[int] pageIndex

)

c

将记录指针移动到指定的页

注意:该页码从1开始计数。

[void] setMasterDataset(

[dataset] masterDataset,

[string] linkString,

[string] detailSql

)

c

建立主从记录集关系

参数说明:

-         masterDataset 主表对象

-         linkString 连接方式。其格式为:主表字段1=从表字段1;主表字段2=从表字段2。如果主表字段名与从表字段名相同,也可以写成:字段名1;字段名2…

-         detailSql 系统用于下载表数据的SQL命令。

[void] flushData(

[string] SQL,

[string] connection,

[int] pageSize,

[int] absolutePage

)

c

重新读取记录集的数据,原有的记录将被全部清除。

参数说明:

-         SQL 要执行的SQL命令,如果不指定此参数系统将使用记录集原先的sql命令

-         connection SQL命令使用的连接字符串的标识。该标识的实质是在Server_ini.js中定义相应连接字符串的变量名,如果不指定此参数系统将使用记录集原先的连接字符串

-         pageSize 要返回的记录数,如果不指定此参数系统将使用记录集原先的pageSize

-         absolutePage 指定返回ADODB.Recordset中的第几页数据。如果不指定此参数的值系统将使用记录集原先的absolutePage

[void] passData (

[dataset] to_dataset,

[enum] mode,

[record] record,

[dataset] from_dataset

)

c

将源记录集中的数据一次性的插入到目标记录集中,同时源记录集将被清空。

参数说明:

-         to_dataset 目标记录集

-         mode 插入方式。取值范围(”begin”, ”before”, “after”, “end”)分别表示在在所有记录之前插入、在参照记录之前插入、在参照记录之后插入、在所有记录的最后追加。如果不指定此参数的值,系统将默认按”end”方式插入。

-         record 参照记录。对于”begin””end”两种插入方式可以不指定此参数的值。

-         from_dataset 源记录集

注意:在使用此方法时应该保证源记录集和目标记录集的数据结构完全相同,否则目标记录集的数据将有可能出现混乱

[void] clearData()

c

清空记录集中的数据

[string] transferToDataString(

[dataset] dataset

)

c

将记录集中的数据转换成字符串,字符串的格式见集数据字符串的格式

参数说明:

-         dataset 将要被转换的记录集对象

[void] appendFromDataString(

[dataset] dataset,

[string] recordStr

)

c

使用数据字符串向记录集中批量的添加记录,字符串的格式见记录集数据字符串的格式说明

参数说明:

-         dataset 将要被转换的记录集对象

-         recordStr 数据字符串

事件

模式

说明

[void] onInitDataset (

[dataset] dataset

)

c

当系统初始化记录集时触发

参数说明:

-         dataset 将要被初始化的记录集对象

[void] onInitField (

[dataset] dataset,

[field] field

)

c

Client端事件,当系统初始化字段属性时被触发。

参数说明:

-         dataset 触发事件的数据集

-         field 将要被初始化的字段对象

在此事件中对字段对象操作时,可直接对各种属性赋值。如field.readOnly=true而无须使用setFieldReadOnly方法

[void] onStateChanged

(

[dataset] dataset

)

c

当记录集的编辑状态发生变化时触发。

参数说明:

-         dataset 触发事件的数据集

[string] beforeChange

(

[dataset] dataset,

[field] field,

[any] value

)

c

当记录集的数据将要被修改时触发。

参数说明:

-         dataset 触发事件的数据集

-         field 将要被修改的字段对象

-         value 将要向该字段赋的新值

-         如果您为此事件定义返回值,系统将终止当前的修改操作并将返回值作为错误信息抛出。如果返回值为”abort”错误信息将不被提示,否则系统将向用户提示该错误信息。

[void] afterChange

(

[dataset] dataset,

[field] field

)

c

当记录集的数据被修改后触发。

参数说明:

-         dataset 触发事件的数据集

-         field被修改的字段对象

[string] beforeScroll(

[dataset] dataset

)

c

当记录集的将要滚动时、即当前记录将要被改变时触发。

参数说明:

-         dataset 触发事件的数据集

-         如果您为此事件定义返回值,系统将终止当前的滚动操作并将返回值作为错误信息抛出。如果返回值为”abort”错误信息将不被提示,否则系统将向用户提示该错误信息。

[void] afterScroll (

[dataset] dataset

)

c

当记录集滚动后、即当前记录改变后触发。

参数说明:

-         dataset 触发事件的数据集

[string] beforeInsert(

[dataset] dataset,

[enum] mode

)

c

当将要向记录集插入记录时触发。

参数说明:

-         dataset触发事件的数据集

-         mode 插入方式,取值范围(”begin”, ”before”, “after”, “end”)分别表示在所有记录的之前、在当前记录之前插入、当前记录之后插入、在所有记录的最后追加。

-         如果您为此事件定义返回值,系统将终止当前的插入操作并将返回值作为错误信息抛出。如果返回值为”abort”错误信息将不被提示,否则系统将向用户提示该错误信息。

[void] afterInsert(

[dataset] dataset,

[enum] mode

)

c

当向记录集插入记录后触发。

参数说明:

-          dataset 触发事件的数据集

-          mode 插入方式

[string] beforeDelete(

[dataset] dataset

)

c

当将要从记录集中删除记录时触发。

参数说明:

-         dataset 触发事件的数据集

-         如果您为此事件定义返回值,系统将终止当前的删除操作并将返回值作为错误信息抛出。如果返回值为”abort”错误信息将不被提示,否则系统将向用户提示该错误信息。

[void] afterDelete(

[dataset] dataset

)

c

当从记录集中删除记录后触发。

参数说明:

-         dataset 触发事件的数据集

[string] beforeCancel(

[dataset] dataset

)

c

当将要取消对当前记录的修改时触发。

参数说明:

-         dataset 触发事件的数据集

-         如果您为此事件定义返回值,系统将终止当前的取消操作并将返回值作为错误信息抛出。如果返回值为”abort”错误信息将不被提示,否则系统将向用户提示该错误信息。

[void] afterCancel(

[dataset] dataset

)

c

当取消对当前记录的修改后触发。

参数说明:

-         dataset 触发事件的数据集

[bool] beforeUpdate(

[dataset] dataset

)

c

当记录的修改将要被确认时触发。

参数说明:

-         dataset 触发事件的数据集

-         如果您为此事件定义返回值,系统将终止当前的确认操作并将返回值作为错误信息抛出。如果返回值为”abort”错误信息将不被提示,否则系统将向用户提示该错误信息。

[void] afterUpdate(

[dataset] dataset

)

c

当记录的修改被确认后触发。

参数说明:

-         dataset 触发事件的数据集

[bool] onFilterRecord(

[dataset] dataset,

[record] record

)

 

c

当系统过滤记录集时触发。

参数说明:

-         dataset 触发事件的数据集

-         record 当前处理的记录

-         如果您为该事件定义的返回值为true表示当前处理的记录可见,否则该记录将被视为不可见。

[int] onCompareRecord(

[dataset] dataset,

[record]record1,

[record]record2

)

c

当记录集比较两条记录的大小以确定排序方式时触发。

参数说明:

-         dataset 触发事件的数据集

-         record1, record2 将要比较的两条记录

-         该事件以整数型的返回值表示record1record2的比较结果。当返回值>0时表示record1>record2;当返回值<0时表示record1<record2;返回值=0时表示record1=record2

注意:此事件仅在sortFields的排序表达式为”#custom时被触发。

[string] beforeLoadDetail(

[dataset] dataset,

[dataset] detailDataset

)

c

当系统准备下载从表数据之前被触发。

参数说明:

-         dataset 触发事件的数据集

-         detailDataset 从表对象

-         如果您为此事件定义返回值,系统将终止当前的操作并将返回值作为错误信息抛出。如果返回值为”abort”错误信息将不被提示,否则系统将向用户提示该错误信息。

[void] onGetUpdateString(

[dataset] dataset,

[record] record,

[object] result

)

c

当系统试图获得该记录的提交字符串时被触发

参数说明:

-         dataset 触发事件的数据集

-         record触发事件的记录

-         result 用于向系统返回处理结果的对象。该对象包含两个属性,分别是modeupdate_string。其中mode表示该记录的提交方式,其取值范围是(nonedeleteupdate