[DataSet] ??bindTarget

2011-12-27 14:31:59by ??


在提到bindTarget属性时,首先先介绍一下Aurora框架页面端的基本编程概念。Aurora页面端采用数据和表示分离的思想,既页面端所有的数据均存放在Dataset(实际为一个js对象)中。Dataset中既存放有数据,又有该数据的附加信息,如对应字段是否必输,是否只读,还有内置的一些对数据的操作方法。
Dataset中可以有一条数据也可以有多条数据,这些数据的存在形式类似于数据表,可以认为dataset中有一张数据表,表中可以有一行或多行记录,这些记录被称作record。
页面中的许多数据元素要和一个dataSet进行绑定。比如,在一个form中输入查询条件,查询条件的输入控件又和一个dataset绑定,那么,这个查询条件就会以该输入组件的name属性为key,输入值为value绑定到此编辑器指定的dataSet上(准确的说是该dataset当前的record上)。sys_prompt.screen中对应查询的dataSet代码清单如下:

  
<a:dataSet id="sys_prompt_query_ds" />

该dataset的声明较为简单,这里你只需要知道form中的查询控件是绑定到该dataset上即可。

      

再来看grid控件绑定的结果dataset

                
<a:dataSet id="sys_prompt_result_ds" autoQuery="true"  model="sys.sys_prompts" selectable="true" fetchAll="false" 
pageSize="15" autoCount="true" queryDataSet="sys_prompt_query_ds">
	<a:fields>
		<a:field name="prompt_code" required="true"/>
		<a:field name="description" required="true"/>
	</a:fields>
</a:dataSet>

      

该dataset中所包含的信息较多,涉及到的属性讲解如下:


1. autoQuery:值取boolean类型,默认为false。意为在页面加载完毕后是否自动进行一次ajax方式的查询动作。
2. selectable:表示查询结果是否可以被选中
3. fetchAll:表示是否一次加载全部数据(不分页)
4. pageSize:如果分页,每页的数据量
5. autoCount:显示结果计数
6. queryDataSet:重要属性,指示查询时,用户可输入的查询条件来源。比如在此例中,查询条件绑定的dataset称为A,结果grid绑定的dataset称为B,如果B的queryDataSet属性为A的ID,那么,当B调用其查询方法的时候,会将A中的数据取出作为附加的查询条件。
7. queryUrl:指定了当前dataset查询数据时的url,其一般格式为:
${/request/@context_path}/autocrud/test.testbm/query?contractno=${/parameter/@contractno}
其一般可分成四部分:${/request/@context_path},取当前web应用的根路径,比如项目名配置为HAP,那么解析后便成为/HAP;autocrud,框架内置,调用框架处理增删改查的机制;test.testbm:前面的test指示bm的文件目录,从web-inf/classes/开始计算,本例中即为web-inf/classes/test/testbm.bm;query:指示该url对应的行为,目前总共有5个可用,query对应查询,insert对应新增,update对应更新,batch_update对循环应增删改,delete对应删除,execute可执行一个pl sql块。
8. model :此属性具有多重作用。首先,该属性值必须是一个bm文件路径(有关bm文件的详细讲解内容,请参见本文档中介绍bm的部分,这里只是先做简单介绍),页面解析时,会对给定路径进行严格检查。当dataset中无queryUrl时,如果调用该dataset的query(),那么会尝试从指定bm文件自动生成查询语句;当dataset中无submitUrl时,如果调用该dataset的submit(),那么会尝试从指定的bm文件自动生成insert、update、delete语句。

其余未列出的属性见本文档DataSet详细介绍一节以及请参阅“Aurora Tag Documentation”文档

此例中涉及到的grid中的子节点介绍如下:

fields: field节点是对dataset中的字段的修饰。在上述代码中,字段prompt_code被声明为“必填项”,当绑定在dataset上的控件有name=”prompt_code” 时,该控件既为必填项。同理,只读控制和其他控制均需在field中声明。

     

Demo
    Attachments

      Comments

      0 Responses to the article

      暂时没有评论。

      发表评论