|
如果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参数,具体方法如下
- 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();
复制代码 |
|