何万里
神圣使者
神圣使者
  • UID60
  • 粉丝20
  • 关注121
  • 发帖数37
  • 社区居民
  • 忠实会员
  • 追星一族
阅读:16068回复:0

平台使用技巧-下拉框的使用方法

楼主#
更多 发布于:2017-09-09 16:23
我们在使用平台下拉框的时候,对应的sql查询语句,必须包含返回字段 code和text,形如:


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编辑了帖子]

最新喜欢:

张浩宇张浩宇 李盛涛李盛涛 胡明胡明 刘欣刘欣
不勤劳,连棵花也养不活。
游客

返回顶部