第三十九章 构建数据库应用程序 - 将数据绑定到表单
CSP
提供了一种将对象数据绑定到HTML
表单的机制。这种绑定使用标准的HTML表单和输入控件标签来定义表单,使可以轻松地使用任何HTML编辑器或设计工具来绑定表单。<csp:object>
标记指定一个对象实例,属性cspbind
被添加到表单和输入控件标记中,以指示它们应该如何绑定。
CSP
编译器识别包含cspbind
属性的表单,并自动生成代码:
- 在适当的输入控件中显示指定对象属性的值。
- 生成客户端
JavaScript
函数来执行简单的验证(如必需的字段检查)。 - 生成客户端
JavaScript
函数以调用生成的服务器端方法来保存绑定对象。 - 生成服务器端方法,验证并保存表单中的数据输入。这些方法可以使用
CSP Event Broker
从页面中直接调用,也可以作为表单提交操作的结果来调用它们。 - 在表单中生成一个隐藏字段
OBJID
,其中包含绑定表单的对象ID
值。
下面是一个绑定到Sample.Person
实例的表单的简单示例。
<html> <head> </head> <body> <csp:object NAME="person" CLASSNAME="Sample.Person" OBJID="1"> <form NAME="MyForm" cspbind="person"> <br>Name: <input type="TEXT" name="Name" cspbind="Name" csprequired> <br>SSN: <input type="TEXT" name="SSN" cspbind="SSN"> <br>City: <input type="TEXT" name="City" cspbind="Home.City"> <br> <input type="BUTTON" name="SAVE" value="SAVE" OnClick="MyForm_save();"> </form> </body> </html> 复制代码
本例使用<csp:object>
标记Sample.Person
在类中打开的实例(在本例中,对象ID
为1
)。此对象实例名为Person
。然后,该示例将对象实例绑定到一个HTML
表单,方法是向其form
标记添加一个名为cspind
的属性,其值为Person
。
该表单包含三个文本输入控件:Name
、SSN
和City
,它们分别绑定到对象属性Name
、SSN
和Home.City
,方法是向它们的每个输入标记添加一个名为cspind
的属性,其值是控件要绑定到的对象属性的名称。
请注意,绑定表单中使用的控件名称必须是有效的JavaScript
标识符。
名称控件还有一个名为CSPREQUIRED
的属性。这表示这是必填字段(必须为其赋值)。CSP
编译器生成客户端JavaScript
以测试用户是否为该字段提供了值。
表单上的最后一个控件是一个按钮,该按钮被定义为在单击时调用客户端的JavaScript
函数MyForm_save
。MyForm_save
函数由CSP
编译器自动生成。此函数收集表单中控件的值,并将它们发送到服务器端方法(也由CSP
编译器自动生成),该方法重新打开对象实例,应用对属性所做的更改,将对象保存到数据库,并将JavaScript
发送到客户端以更新表单中的值,以反映保存的内容。
请注意,我们在本文档中定义了HEAD
部分。当使用绑定表单时,这是必要的,因为这是CSP
编译器在处理绑定表单时可能生成的任何客户端JavaScript
的位置。
按照约定,绑定表单中使用的对象的对象ID
由URL
参数OBJID
指定。 这使得绑定表单可以与预构建的页面交互,比如CSP
Search
工具使用的那些页面。 要使用URL
参数的值作为对象ID
,请在csp:object
标记中使用引用它的表达式:
<csp:object NAME="person" CLASSNAME="Sample.Person" OBJID=#($G(%request.Data("OBJID",1)))#>