| [Reference] MultiLov2011-11-21 16:28:58by ??? MultiLov是一个提供文本输入编辑和通过弹出窗口提供选项选择的组件,继承自Lov组件,拥有Lov标签的属性以及Lov对象的方法和事件。弹出窗口中为一个固定格式的页面,包含选项集的查询条件输入框和两个用Grid组件成列的选项集和待选集。 上图是MultiLov组件在页面中的呈现,输入框前的文字信息是通过Lov标签属性prompt来定义的。 在screen文件中我们通过<a:multiLov>标签来定义一个MultiLov对象。 <a:dataSet id="gld_exchange_rate_ds" autocreate="true"> <a:datas dataSource="/model/gerc"/> <a:fields> <a:field displayField="currency_name" valueField="currency_code" name="currency_code_frn" lovGridHeight="300" lovHeight="460" lovWidth="490" title="币种选择" lovService="gld.gld_currency_lov?currency_code_frn=${/model/gerc/record/@currency_code}"/> </a:fields> <a:field name="currency_name_frn" readonly="true"/> </a:dataSet> <a:multiLov 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:multiLov> multiLov标签可以设置一个id属性,id是组件的唯一标识,我们可以在页面脚本中用$('id')的方法获得该id对应的组件对象,进而可以调用相应的函数方法。 multiLov标签的bindTarget属性可指定一个dataset对象的id,name属性可指定该dataset其中一个field的名字。这两个属性必须联合使用,其功能是将Lov对象绑定到dataset中的一个field上,进而我们只要对dataset进行操作就能即时反映在MultiLov上,另外MultiLov上的文字编辑也会立刻修改dataset中的数据。 如上代码,field标签是multiLov所绑定的dataset中的一条字段(field),field标签中lovHeight,lovWidth属性可指定弹出窗口的高度和宽度,lovService属性可指定弹出窗口中生成页面的BM,title属性可指定弹出框的标题。注意:以上属性均可定义在multiLov标签上,效果相同,但是建议定义在field标签上。 field标签中displayField和valueField属性定义了弹出窗口选项集的字段和主窗口的字段的联系关系,displayField是将multiLov弹出窗口中选项的对应字段的值显示在主窗口中的输入框中,valueField是将弹出窗口中选项的对应字段的值传递给主窗口的控件,用于数据传递。由于传回的多个数据,显示的格式是以分号分隔,而值是以单引号括起以及逗号分隔 events标签定义了需要响应的事件函数,例如enterdown事件,当键盘键入回车键时,MultiLov会触发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}); } Demo Attachments |
Comments
1 Responses to the article