阅读:16068回复:0
平台使用技巧-下拉框的使用方法
select id code, name text, author memo from book 主要为了满足页面下拉框对应code,text规范。 对应的下拉框设置, 图片:QQ截图20170909161202.png ![]() 如果选择code,那在使用getFormValue构件获取值的时候,将获取到code值,同理,设置text,将获取到text的值。 无论选择code,还是text,页面显示的还是text的值。 在数据源选项卡设置的时候,我们有两种方式,一种静态数据(如图): 图片:静态数据.png ![]() ,一种动态数据源。其中,动态数据源有两种方式: 图片:2.png ![]() 一种是默认数据源,可以引用sqlMap,也可以引用服务装配。自定义数据源其实也默认数据源形式相同,如果是sqlMap都是这样的格式: ./data/ComboData.svt?sqlid=ComboTest.selectBookList 可以看得出,其实就是调用了一个servlet,然后传了一个sqlid的参数,然后返回数据,并绑定到下拉数据源上。 假如还有参数要传入,我们也可以在其后继续添加,用&参数=值连接起来就行了。 如果是默认数据源,我们可以像图片上的,参数配置,参数名:id,可以传入一个值或者一个sql语句,对应的我们的sqlMap语句也需要添加相应参数: select id code, name text, author memo from book where 1=1 #if($P.id and $P.id != '') and id in ($P.id) #end 通过动态参数配置,满足不同数据过滤要求。 当然,我们还可以在页面准备事件,动态配置,这样所有的参数,我们都页面来控制, 连查询那张表都由前端构件来控制: 1.我们现在onReady逻辑流里页面设置一个变量,要传的动态参数: 图片:页面参数.png ![]() 2.然后我们利用赋值构件给data变量赋值,比如我们写一个已经满足下拉框结构的sql语句: 图片:赋值.png ![]() 3.然后利用下拉框的reload构件,重新加载数据源: 图片:重新加载.png ![]() 4.我们修改sqlMap语句为动态语句: 图片:sqlMap.png ![]() 最后,我们把下拉框绑定的数据元去掉,然后利用页面准备事件加载数据,最终能够得到预想的效果。 图片:结果.png ![]() 当然,我们可以动态改变表的名字,不一定每次都动态改变sqlid。 利用上面的方法,我们每次只写一个下拉框查询的动态语句,以此来满足所有的表的下拉框数据。不同页面的下拉框 数据只需要传入动态参数即可。 类似的,其实,表格数据查询也可以利用这样的动态配置来完成查询。 最后再说一个下拉框使用的技巧,在最开始,我写了一个sql,里面查询了一个字段是memo,其实平台的下拉框是将 memo值也写入了的。在下拉框的列表选择事件中,有一个参数,当然这个参数随便写: 图片:选择事件.png ![]() 如图所示,在下拉列表选择事件设置一个参数,然后在自定义构件中写如下代码(可以封装成构件): var selectedIndex = params.selectedIndex; if(selectedIndex==-1){ selectedIndex=0 }; var memo = params.store.data.items[selectedIndex].data.memo; 利用上面代码可以获取到选择的下拉框的memo值。根据需求,可以将查询中任意字段命名为memo,然后通过以上方式 获取memo的值。 以上是个人关于下拉框使用的一些方法的总结,如果不对的地方,或者还有其他的功能,欢迎大家提出,我们一起探讨学习。 [何万里于2017-09-09 22:58编辑了帖子]
|
|
|