Lov

Lov是一个提供文本输入编辑和通过弹出窗口提供选项选择的组件,继承自TextField组件,拥有TextField标签的属性以及TextField对象的方法和事件。弹出窗口中为一个固定格式的页面,包含选项集的查询条件输入框和用Grid组件成列的选项集。

上图是Lov组件在页面中的呈现,输入框前的文字信息是通过Lov标签属性prompt来定义的。

Lov定义

在screen文件中我们通过<a:lov>标签来定义一个Lov对象。

<a:dataSet id="gld_exchange_rate_ds" autocreate="true">
    <a:datas dataSource="/model/gerc"/>
    <a:fields>
    	<a:field name="currency_code_frn" lovGridHeight="300" lovHeight="460"
		lovService="gld.gld_currency_lov?currency_code_frn=${/model/gerc/record/@currency_code}"
		lovWidth="490" title="币种选择">
            <mapping>
                <map from="currency_code" to="currency_code_frn"/>
                <map from="currency_name" to="currency_name_frn"/>
            </mapping>
        </a:field>
    </a:fields>
    <a:field name="currency_name_frn" readonly="true"/>
</a:dataSet>

<a:lov name="currency_code_frn" bindTarget="gld_exchange_rate_ds" prompt="GLD_CURRENCY.CURRENCY_CODE_FRN">
    <a:events>
        <a:event handler="login" name="enterdown"/>
    </a:events>	
</a:lov>

lov标签可以设置一个id属性,id是组件的唯一标识,我们可以在页面脚本中用$('id')的方法获得该id对应的组件对象,进而可以调用相应的函数方法。

lov标签的bindTarget属性可指定一个dataset对象的id,name属性可指定该dataset其中一个field的名字。这两个属性必须联合使用,其功能是将Lov对象绑定到dataset中的一个field上,进而我们只要对dataset进行操作就能即时反映在Lov上,另外Lov上的文字编辑也会立刻修改dataset中的数据。

如上代码,field标签是lov所绑定的dataset中的一条字段(field),field标签中lovHeight,lovWidth属性可指定弹出窗口的高度和宽度,lovService属性可指定弹出窗口中生成页面的BM,title属性可指定弹出框的标题。注意:以上属性均可定义在lov标签上,效果相同,但是建议定义在field标签上。

field标签下的mapping标签定义了弹出窗口选项集的字段和主窗口的字段的联系关系,每条map标签都有from和to属性,from是lov弹出窗口中选项的字段,to是lov在主窗口绑定的dataset中的字段。

events标签定义了需要响应的事件函数,例如enterdown事件,当键盘键入回车键时,Lov会触发enterdown事件,这样我们可以通过配置一个客户端函数login来响应。

function login(){
    var lds = $('login_dataset');
    var record = lds.getCurrentRecord();
    Aurora.request({url:'login.svc', para:record.data, success:function(){
        window.location.href='role_select.screen'
    },scope:this});
}
Lov标签属性

Table 1. 

属性名 用途 默认值 是否必填
lovGridHeight 弹出窗口中Grid的高度。 350
lovHeight 弹出窗口的高度。 400
lovService 弹出窗口中数据对应的BM。
lovUrl 弹出窗口中页面的Url。
lovWidth 弹出窗口的宽度。 400
title 弹出窗口的标题。
fetchRemote 手工输入后是否自动查询数据。
其他 请参阅TextField的标签属性。

Lov对象事件

Table 2. 

事件名 用途
commit 窗口的选项被选择后触发的事件,手工输入后自动查询数据(fetchRemote=true)的时候也会触发。
其他 请参阅TextField的对象事件