如果queryAction不能满足获取数据的需求,就需要自定义action,在action中仅仅返回table,再通过data组件的loadXML方法装入数据,和执行queryAction的效果是不同的,原因是还需要进行一些设置,按照下面的方法进行设置,可以获得和queryAction同样的效果。
1 设置rowid
</pre> Table table = KSQL.select("select X5_GoodsType.* from X5_GoodsType X5_GoodsType",null, "/x5demo/rich/data", null); return table; <pre>
仅仅这样写,放入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,一个用于取数据,一个用于取得记录数。如果我们也要分页,也要使用相同的方法。
</pre> //设置table的count属性,总记录数 table.getProperties().put(Table.PROP_DB_COUNT, 100); <pre>
3 设置列顺序
如果查询的结果需要在grid中显示,就需要设置列的顺序,否则grid中的列顺序与返回结果不同,会造成错位。在js中调用Action之前,设置sequence参数,具体方法如下
var tp= new justep.Request.TranslateParam(); tp.rowOption.sequence = justep.xbl("dataMain").getColumnIds(); var options = {}; options.translateParam = tp; 。。。 var response = justep.Request.sendBizRequest2(options);
4 设置父关系
如果需要返回的是树形数据
1、需要在UI调用action时,多传一个转换参数
2、grid组件的delay属性应设置为fslse
3、如果希望树完全展开,可以调用data的expandAll()方法
完整示例如下
var tp= new justep.Request.TranslateParam(); tp.dataType = justep.Request.TranslateParam.DATATYPE_ROW_TREE ; tp.setTreeOption("tree-parent-relation", "fParent"); var options = {}; options.translateParam = tp; options.dataType = "xml"; options.process = justep.Context.getCurrentProcess(); options.activity = justep.Context.getCurrentActivity(); options.action = "userQueryAction"; var response = justep.Request.sendBizRequest2(options); if(!justep.Request.isBizSuccess(response,'xml')){ throw new Error("调用Action失败"); } justep.xbl("dataMain").loadXML(response.responseXML); justep.xbl('dataMain').expandAll();
本文由WeX5君整理,WeX5一款开源免费的html5开发工具,H5 App开发就用WeX5!
阅读其他app 开发相关文章:http://doc.wex5.com/?p=3443
评一波