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

QQ登录

只需一步,快速开始

查看: 14297|回复: 8

模仿queryAction

  [复制链接]

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2012-10-23 11:56:59 | 显示全部楼层 |阅读模式
如果queryAction不能满足获取数据的需求,就需要自定义action,在action中仅仅返回table,再通过data组件的loadXML方法装入数据,和执行queryAction的效果是不同的,原因是还需要进行一些设置,按照下面的方法进行设置,可以获得和queryAction同样的效果。

1、设置rowid

Table table = KSQL.select("select X5_GoodsType.* from X5_GoodsType X5_GoodsType",null, "/x5demo/rich/data", null);
return table;

仅仅这样写,放入data后,grid会把fid列显示出来,此时使用data.getID(),得不到值,说明系统不知道fid是rowid,需要增加一句代码。如下:
Table table = KSQL.select("select X5_GoodsType.* from X5_GoodsType X5_GoodsType",null, "/x5demo/rich/data", null);
//设置table的rowid属性
table.getProperties().put(Table.PROP_NAME_ROWID, "X5_GoodsType");
return table;
这样处理后,就正常了

2、设置count

X5的queryAction可以分页,原因是它发了两个sql,一个用于取数据,一个用于取得记录数。如果我们也要分页,也要使用相同的方法。
//设置table的count属性,总记录数
table.getProperties().put(Table.PROP_DB_COUNT, 100);

3、设置列顺序

如果查询的结果需要在grid中显示,就需要设置列的顺序,否则grid中的列顺序与返回结果不同,会造成错位。在js中调用Action之前,设置sequence参数,具体方法如下
  1. var tp= new justep.Request.TranslateParam();
  2. tp.rowOption.sequence = justep.xbl("dataMain").getColumnIds();
  3. var options = {};
  4. options.translateParam = tp;
  5. 。。。
  6. var response = justep.Request.sendBizRequest2(options);
复制代码

4、设置父关系

如果需要返回的是树形数据,
1、需要在UI调用action时,多传一个转换参数
2、grid组件的delay属性应设置为fslse
3、如果希望树完全展开,可以调用data的expandAll()方法

完整示例如下
  1. var tp= new justep.Request.TranslateParam();
  2. tp.dataType = justep.Request.TranslateParam.DATATYPE_ROW_TREE ;
  3. tp.setTreeOption("tree-parent-relation", "fParent");
  4.                
  5. var options = {};
  6. options.translateParam = tp;
  7. options.dataType = "xml";
  8. options.process = justep.Context.getCurrentProcess();
  9. options.activity = justep.Context.getCurrentActivity();
  10. options.action = "userQueryAction";
  11. var response = justep.Request.sendBizRequest2(options);
  12. if(!justep.Request.isBizSuccess(response,'xml')){
  13.         throw new Error("调用Action失败");
  14. }
  15. justep.xbl("dataMain").loadXML(response.responseXML);
  16. justep.xbl('dataMain').expandAll();
复制代码

311

主题

944

帖子

1708

积分

金牌会员

Rank: 6Rank: 6

积分
1708
QQ
发表于 2013-4-16 16:06:44 | 显示全部楼层
如何建立和调用action, 执行一段复杂的update语句,其中有参数??
怒发冲冠凭栏处,潇潇雨歇,抬望眼,仰天长啸,壮怀激烈。  
三十功名尘与土,八千里路云和月,莫等闲,白了少年头,空悲切

96

主题

399

帖子

1335

积分

金牌会员

Rank: 6Rank: 6

积分
1335
QQ
发表于 2013-12-6 16:27:14 | 显示全部楼层
好帖,收藏

71

主题

289

帖子

653

积分

高级会员

Rank: 4

积分
653
QQ
发表于 2013-12-19 13:20:57 | 显示全部楼层
如何建立和调用action, 执行一段复杂的update语句,其中有参数??
人生不能Debug。。。

15

主题

70

帖子

397

积分

中级会员

Rank: 3Rank: 3

积分
397
发表于 2014-3-18 14:36:08 | 显示全部楼层
小雪,我这个ksql是分组统计用的,查出的列中没有fid。那设置rowid传给页面的bizdata时候怎么做?页面怎么接收?

9

主题

51

帖子

199

积分

初级会员

Rank: 2

积分
199
QQ
发表于 2014-4-17 10:30:23 | 显示全部楼层
GOOD TIE
匿名  发表于 2015-3-15 20:50:05
好帖子
回复

使用道具

53

主题

182

帖子

465

积分

中级会员

Rank: 3Rank: 3

积分
465
QQ
发表于 2015-3-15 20:50:59 | 显示全部楼层
收藏,好帖子

53

主题

313

帖子

1134

积分

金牌会员

Rank: 6Rank: 6

积分
1134
QQ
发表于 2016-5-28 10:46:15 | 显示全部楼层
这个好啊!!!
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

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

GMT+8, 2024-5-16 16:13 , Processed in 0.115289 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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