起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6039|回复: 15

[处理中2] 标准action和自定义action

  [复制链接]

94

主题

1141

帖子

2380

积分

金牌会员

Rank: 6Rank: 6

积分
2380
发表于 2016-4-20 14:07:05 | 显示全部楼层 |阅读模式
对于标准action和自定义action,有点问题不懂,想请教一下。如下图是标准的action,但是所查询的字段是动态的或者是自定义的字段,我应该怎么设置呢?
QQ截图20160420134600.png


如下图是自定义的action,实现common/CRUD/sqlQuery,countSql和sql参数一定要设?同样,sql语句的where条件是动态的,我应该怎么去设置呢,在页面上用bassData绑定这个action,在属性设置limit和orderBy没效果,在js设置filter也没有效果,求解?
QQ截图20160420135721.png

12

主题

2627

帖子

2866

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2866
发表于 2016-4-20 14:32:41 | 显示全部楼层
有一个基础概念: action中private参数是指在定义action时必须给出的参数, public是前端页面传递过来的

但是所查询的字段是动态的或者是自定义的字段,我应该怎么设置呢?
    默认不用设置, 会查出表的所有字段;
countSql和sql参数一定要设?
    一定要设

同样,sql语句的where条件是动态的,我应该怎么去设置呢
    可以在js中通过setFilter来实现

在属性设置limit和orderBy没效果,在js设置filter也没有效果,求解?
     需要在sql参数是写出类似
    select * from xxTable where xxx :rderBy ::limit
另: 后续平台会提供相关的案例和文档


回复 支持 反对

使用道具 举报

94

主题

1141

帖子

2380

积分

金牌会员

Rank: 6Rank: 6

积分
2380
 楼主| 发表于 2016-4-20 16:13:25 | 显示全部楼层
hecr 发表于 2016-4-20 14:32
有一个基础概念: action中private参数是指在定义action时必须给出的参数, public是前端页面传递过来的

...

我知道从js设置啊,但是没效果啊,setFilter和setOrderBy 都不行
回复 支持 反对

使用道具 举报

12

主题

2627

帖子

2866

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2866
发表于 2016-4-21 11:42:13 | 显示全部楼层
在你的action定义中, 你需要写出标识出, 前端传过来的filter放在sql的什么地方,例如
select * from xxTable where ::filter :rderBy

这样标识后, 才会最后拼到sql里, 类似的你的countSql也需要加入类似的标识
回复 支持 反对

使用道具 举报

94

主题

1141

帖子

2380

积分

金牌会员

Rank: 6Rank: 6

积分
2380
 楼主| 发表于 2016-4-21 14:06:14 | 显示全部楼层
hecr 发表于 2016-4-21 11:42
在你的action定义中, 你需要写出标识出, 前端传过来的filter放在sql的什么地方,例如
select * from xxTa ...

如果sql参数这样写的话 WHERE EMPLOYEE_NO=:F1 ,那是不是就是说只能用设好的那些字段做过滤条件咯?不能动态设置过滤的字段?
还有就是排序怎么设呢,设置orderBy没用,像过滤条件那样写ORDER BY :O1,然后在页面js设也不行,应该怎么写呢?
回复 支持 反对

使用道具 举报

4

主题

1579

帖子

2706

积分

内部用户

积分
2706
发表于 2016-4-21 15:21:50 | 显示全部楼层
本帖最后由 XiaoQLuo 于 2016-4-21 19:35 编辑

baas后端的sqlQuery action的sql语句中支持两种参数写法,
1、:name----一个:的方式,这种是值参数,类似于我们通常的的sql中的?;
如:select * from abc where name=:name
前端设置通过data设置name='liming'
data.filters.setVar("name",'liming');
最终服务端按  select * from abc where name=?,'liming'执行
2、::filter----两个::的方式,这种参数将会拼到sql中去
如:select * from abc where ::filter :rderBy
前端设置通过data设置filter
data.setFilter("filter1","name='liming'");
data.setOrderBy("age",0);
最终服务端按  select * from abc where name='liming' order by age DESC执行


回复 支持 反对

使用道具 举报

94

主题

1141

帖子

2380

积分

金牌会员

Rank: 6Rank: 6

积分
2380
 楼主| 发表于 2016-4-21 15:42:09 | 显示全部楼层
XiaoQLuo 发表于 2016-4-21 15:21
baas后端的sqlQuery action的sql语句中支持两种参数写法,
1、:name----一个:的方式,这种是值参数,类似于 ...

按你说的第二种方法试了,完全没效果,真是醉了。。。
第一种反而有效果,但是order by怎么设置
回复 支持 反对

使用道具 举报

4

主题

1579

帖子

2706

积分

内部用户

积分
2706
发表于 2016-4-21 19:23:04 | 显示全部楼层
jason2014 发表于 2016-4-21 15:42
按你说的第二种方法试了,完全没效果,真是醉了。。。
第一种反而有效果,但是order by怎么设置 ...

把你写的贴出来
回复 支持 反对

使用道具 举报

4

主题

1579

帖子

2706

积分

内部用户

积分
2706
发表于 2016-4-21 19:28:22 | 显示全部楼层
本帖最后由 XiaoQLuo 于 2016-4-21 19:29 编辑
jason2014 发表于 2016-4-21 15:42
按你说的第二种方法试了,完全没效果,真是醉了。。。
第一种反而有效果,但是order by怎么设置 ...

你是这样写的吗?
  1. select * from a where ::filter ::orderBy
复制代码
这样写前端就正常调用data的setFilter和setOrderBy
回复 支持 反对

使用道具 举报

94

主题

1141

帖子

2380

积分

金牌会员

Rank: 6Rank: 6

积分
2380
 楼主| 发表于 2016-4-22 11:53:02 | 显示全部楼层
XiaoQLuo 发表于 2016-4-21 19:28
你是这样写的吗?
这样写前端就正常调用data的setFilter和setOrderBy

总算是可以了,感谢。。。另外limit和offset设置不行吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-1 05:23 , Processed in 0.070183 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表