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

QQ登录

只需一步,快速开始

查看: 1777|回复: 11

[结贴] 关于自定义queryAction的主从关系

[复制链接]

46

主题

189

帖子

1218

积分

金牌会员

Rank: 6Rank: 6

积分
1218
QQ
发表于 2014-7-2 15:25:00 | 显示全部楼层 |阅读模式
1.png
如图,界面上主表用的是标准的bizQueryAction,从表是我自己写的queryAction,已经设置了主从关系
2.png

但跟踪发现,点上面的查询的时候,从表只会查出主表的第一条数据,当光标移动到主表其它行的时候,从表不会跟着改变
Action代码:
  1. public static Table queryAccountList(String concept,String idColumn,String select,String from,String condition,
  2.                                                      List range,String filter,Boolean distinct,Integer offset,Integer limit,
  3.                                                      String columns,String orderBy,String aggregate,String aggregateColumns,Map variables,
  4.                                                      String dataModel,String fnModel,String vBegin,String vEnd){
  5.                
  6.                 try {       
  7.                          String where = "";
  8.             if(filter != null && !"".equals(filter)){
  9.                     where = "  and (" + filter+")";
  10.             }
  11.       
  12.                         String sql = "";
  13.                         sql = "select OA_AttRelation.fid as fID,OA_AttRelation.fRelationID as fRelationID,OA_AttRelation.fTranType as fTranType,OA_AttRelation.fClientAccount as fClientAccount," +
  14.                                         "OA_AttRelation.fRecordNo as fRecordNo,OA_AttRelation.fBIZKIND as fBIZKIND,OA_AttRelation.fApplyPreUrl as fApplyPreUrl,OA_AttRelation.fApplyPsnID as fApplyPsnID," +
  15.                                         "OA_AttRelation.fApplyPsnCode as fApplyPsnCode,OA_AttRelation.fApplyPsnName as fApplyPsnName,OA_AttRelation.fApplyDuty as fApplyDuty,OA_AttRelation.fApplyDate as fApplyDate," +
  16.                                         "OA_AttRelation.fPlanHours as fPlanHours,OA_AttRelation.fExplain as fExplain,OA_AttRelation.fYDayHours as fYDayHours,OA_AttRelation.fUsedHours as fUsedHours," +
  17.                                         "OA_AttRelation.fRemark as fRemark,case when OA_AttRelation.fPlanHours<0 then null else OA_AttRelation.fPlanHours end  as fIn," +
  18.                                         "case when OA_AttRelation.fPlanHours<0 then OA_AttRelation.fPlanHours*-1 else null end as fOut   from OA_AttRelation OA_AttRelation " +
  19.                                         "where convert(varchar(10),fApplyDate,120)>=? and convert(varchar(10),fApplyDate,120)<=?  "+where+" order by fApplyDate asc"        ;       
  20.                        
  21.                         List<Object> list = new ArrayList<Object>();
  22.                         list.add(vBegin);
  23.                         list.add(vEnd);
  24.                        
  25.                         Map<String, String> sqlMap = new HashMap<String, String>();
  26.                         sqlMap.put(DatabaseProduct.MSSQL.name(), sql);               
  27.                         Table table=SQL.select(sqlMap, list, DATA_MODEL);
  28.                         table.getProperties().put(Table.PROP_NAME_ROWID, "fID");       
  29.                        
  30.                         return table;
  31.                        
  32.                 } catch (Exception e) {                       
  33.                         System.out.println("ds.createVersion Exception:" + e.getMessage());
  34.                         return null;
  35.                 }
  36.         }
复制代码
可不可以像标准动作一样,点击主表相应的行,从表跟着改变,而不用自己在主表发生改变时写从表刷新语句呢??


88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-7-2 16:27:23 | 显示全部楼层
在java输出一下filter参数
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

46

主题

189

帖子

1218

积分

金牌会员

Rank: 6Rank: 6

积分
1218
QQ
 楼主| 发表于 2014-7-2 16:32:48 | 显示全部楼层
zhaixin 发表于 2014-7-2 16:27
在java输出一下filter参数

输出:(OA_AttRelation.fBIZKIND ='OA_NGbills') AND (OA_AttRelation.fApplyPsnID='E222548A7B3244DA9A70104E66ABCE26')
这是点查询的时候,直接定位在了第一条,以后再点主表其它行不会再输出。。。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36151
发表于 2014-7-2 17:20:26 | 显示全部楼层
点查询的时候调用的什么?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

46

主题

189

帖子

1218

积分

金牌会员

Rank: 6Rank: 6

积分
1218
QQ
 楼主| 发表于 2014-7-2 17:27:01 | 显示全部楼层
jishuang 发表于 2014-7-2 17:20
点查询的时候调用的什么?

主,从数据集刷新 。。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36151
发表于 2014-7-2 17:43:22 | 显示全部楼层
lxl8611 发表于 2014-7-2 17:27
主,从数据集刷新 。。

只是简单的刷新,没有设置过滤条件吗?在主data的数据切换grid的事件中才调用一下从data的刷新看看
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

46

主题

189

帖子

1218

积分

金牌会员

Rank: 6Rank: 6

积分
1218
QQ
 楼主| 发表于 2014-7-3 08:40:36 | 显示全部楼层
jishuang 发表于 2014-7-2 17:43
只是简单的刷新,没有设置过滤条件吗?在主data的数据切换grid的事件中才调用一下从data的刷新看看 ...

写在主data的IndexChanged事件里是可以,但是我想问的是,不能像其它设置了主从关系的数据集一样,主表改变从表自动改变吗??必须要自己手动写刷新是吗???
回复 支持 反对

使用道具 举报

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-7-3 13:17:58 | 显示全部楼层
OA_AttRelation.fBIZKIND ='OA_NGbills——filter中的这个条件是在哪里加上的

设置主从之后,主表移动记录,会调用queryaction刷新从表,存入缓存,以后,再移动到已经取到从表数据的主表记录,不会调用queryaction,而是从缓存中取从表记录。你是否在哪里遍历过主表?
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

46

主题

189

帖子

1218

积分

金牌会员

Rank: 6Rank: 6

积分
1218
QQ
 楼主| 发表于 2014-7-3 13:38:31 | 显示全部楼层
zhaixin 发表于 2014-7-3 13:17
OA_AttRelation.fBIZKIND ='OA_NGbills——filter中的这个条件是在哪里加上的

设置主从之后,主表移动记录 ...

OA_AttRelation.fBIZKIND ='OA_NGbills是在界面上设置的过虑
1.png

我就点查询的时候,给主表传入过虑条件,刷新主从表。。
查询按钮代码 :
  1. ng_Account.trigger1Click = function(event){
  2.         var strWhere="";
  3.         var fUrl=justep.xbl("ogf1").getFilter("V_SA_OPPerson.sFID");
  4.         var empStatus="";
  5.         var empName="";
  6.         if (justep.xbl("cCustomer").getValue("cZaiZhi")=="esActive"){
  7.                 empStatus=empStatus+","+justep.xbl("cCustomer").getValue("cZaiZhi");
  8.         }
  9.         if (justep.xbl("cCustomer").getValue("cLiZhi")=="esDimission"){
  10.                 empStatus=empStatus+","+justep.xbl("cCustomer").getValue("cLiZhi");
  11.         }
  12.         if (empStatus!=""){
  13.                 empStatus=empStatus.substring(1, empStatus.length);
  14.         }
  15.         if (justep.xbl("cCustomer").getValue("cTempName")!="" && justep.xbl("cCustomer").getValue("cTempName")!=null){
  16.                 empName=" HR_EP_Employee.fName like '%"+justep.xbl("cCustomer").getValue("cTempName")+"%'";
  17.         }
  18.         strWhere=" ("+fUrl+") ";
  19.         if (empStatus!=""){
  20.                 empStatus=empStatus.replace(",", "','");
  21.                 strWhere=strWhere+" and HR_EP_Employee.fEmpStatus in ('"+empStatus+"') ";
  22.         }
  23.         if (empName!=""){
  24.                 strWhere=strWhere+" and "+empName;
  25.         }
  26.         justep.xbl("dMaster1").setFilter("filterM1", strWhere);
  27.         justep.xbl("dMaster1").refreshData();
  28.         justep.xbl("dDetail1").refreshData();
  29. };
复制代码



回复 支持 反对

使用道具 举报

88

主题

9507

帖子

5135

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5135
QQ
发表于 2014-7-3 16:22:30 | 显示全部楼层
dDetail的auto-load是true吗
远程的联系方法 QQ 728094812。添加好友时,需要填写论坛账号
发远程时同时也发一下帖子的地址,方便了解要解决的问题

如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-13 05:11 , Processed in 0.058161 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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