如果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