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

QQ登录

只需一步,快速开始

楼主: win3394393

[处理中3] 如何实现动态grid列头和报表动态列头

[复制链接]

536

主题

1199

帖子

2586

积分

金牌会员

Rank: 6Rank: 6

积分
2586
QQ
 楼主| 发表于 2021-1-19 13:10:44 | 显示全部楼层
jishuang 发表于 2021-1-19 09:20
把列转为行,用一个字段返回,table中列也用数据的方式去展现

import com.justep.system.data.*;
public class KsqlTest {
public static Table ksqlSelectTest(String dataModel,String ksql) {

  ksql="select COMMON_DICT.fType from COMMON_DICT COMMON_DICT where COMMON_DICT.fParentCode='yqlsjd'";
  Table table = KSQL.select(ksql, null, dataModel, null);
  return table;
}
}
3.png
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2021-1-19 13:53:10 | 显示全部楼层
报错的列重复,不是值重复

如果不能满足,那就只能自己js去创建table这个是httm标准的可以到网上查找

grid相关的操作可以看看dxhtmlgrid是否提供的有相关的API
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

536

主题

1199

帖子

2586

积分

金牌会员

Rank: 6Rank: 6

积分
2586
QQ
 楼主| 发表于 2021-1-19 15:47:36 | 显示全部楼层
本帖最后由 win3394393 于 2021-1-19 16:37 编辑
jishuang 发表于 2021-1-19 13:53
报错的列重复,不是值重复

如果不能满足,那就只能自己js去创建table这个是httm标准的可以到网上查找

先不考虑JS自定义的问题。我知道报错是列重复,现在关键要找到列为什么会重复?怎么查?

需要帮着远程看下  qq 319515678
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2021-1-19 17:03:01 | 显示全部楼层
1.这个错误tomcat肯定会报错看,看tomcat控制台的完整信息
2.具体做什么的时候报错的,可以js和java跟踪写的代码去调试
3.动态创建grid的java和js中都提供了代码,里面都有table的数据都可以自己调试跟踪
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

536

主题

1199

帖子

2586

积分

金牌会员

Rank: 6Rank: 6

积分
2586
QQ
 楼主| 发表于 2021-1-19 17:15:35 | 显示全部楼层
本帖最后由 win3394393 于 2021-1-19 17:22 编辑
jishuang 发表于 2021-1-19 17:03
1.这个错误tomcat肯定会报错看,看tomcat控制台的完整信息
2.具体做什么的时候报错的,可以js和java跟踪写 ...

在保存数据的时候报错,动态展示我已经能够展示了,现在是展示了,客户要编辑数据走流程审批,但是一保存数据,就直接报错,  难道动态展示后的数据,是不可以编辑的么?不能保存的么、》



2021-01-19 17:21:33 action:<?xml version="1.0" encoding="UTF-8"?>
<actions><action content-type="application/json" accept="application/json, text/javascript, */*"><![CDATA[{"process":"/im/ksqlTest/process/ksqlTest/ksqlTestProcess","activity":"mainActivity","actionFlag":"__action_0__","executor":"","executeContext":"","action":"saveCOMMON_DICTAction","parameters":{"table":{"@type":"table","userdata":{"model":"/im/common/data","userdata":"whereVersion","relations":"EXPRESS,EXPRESS,COMMON_DICT.version,COMMON_DICT.fParent,COMMON_DICT.fParentCode,COMMON_DICT.fCode,COMMON_DICT.fName,COMMON_DICT.fType,COMMON_DICT.fSequence,COMMON_DICT.fBZ,COMMON_DICT.fFJSM,COMMON_DICT.fSFYZJD,COMMON_DICT.fSFBT","relation-types":"String,Integer","relation-alias":"编码,a","concept":"COMMON_DICT","conceptAlias":"COMMON_DICT","idColumnName":"COMMON_DICT","idColumnType":"String","idColumnDefine":"COMMON_DICT","relationAlias":"编码,a,version,fParent,fParentCode,fCode,fName,fType,fSequence,fBZ,fFJSM,fSFYZJD,fSFBT","relationTypes":"Object,Object,Integer,String,String,String,String,String,Integer,Text,Text,String,String","updateMode":"whereVersion"},"rows":[{"userdata":{"id":{"value":1,"originalValue":1,"changed":null},"recordState":"edit"},"编码":{"value":"yqlsjd55","originalValue":"yqlsjd","changed":"1"},"a":{"value":"0","originalValue":"0","changed":"0"}}]}},"translateParameter":null}]]></action></actions>
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:592)
at com.justep.system.action.Engine.invokeActions(Native Method)
at com.justep.system.action.Engine.invokeActions(Unknown Source)
at com.justep.business.server.BusinessServer.doAction(Unknown Source)
at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
at com.justep.business.server.BusinessServer.excute(Unknown Source)
at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:595)
Caused by: com.justep.exception.BusinessException: 编码: JUSTEP150184; 提示: 更新记录出错, 更新模式是WHERE_VERSION时, version值不允许为空
at com.justep.exception.BusinessException.create(Unknown Source)
at com.justep.util.Utils.check(Unknown Source)
at com.justep.system.data.impl.TableImpl.edit(Unknown Source)
at com.justep.system.data.impl.TableImpl.save(Unknown Source)
at com.justep.system.data.impl.TableImpl.save(Unknown Source)
at com.justep.system.data.BizData.save(Unknown Source)
at BizProcedure.save(BizProcedure.java:18)
... 26 more



56.png
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2021-1-20 09:57:06 | 显示全部楼层
更新记录出错, 更新模式是WHERE_VERSION时, version值不允许为空

报错已经提供了verison字段必须有值,确认这个字段给值了吗?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

536

主题

1199

帖子

2586

积分

金牌会员

Rank: 6Rank: 6

积分
2586
QQ
 楼主| 发表于 2021-1-20 11:32:49 | 显示全部楼层
本帖最后由 win3394393 于 2021-1-20 11:57 编辑
jishuang 发表于 2021-1-20 09:57
更新记录出错, 更新模式是WHERE_VERSION时, version值不允许为空

报错已经提供了verison字段必须有值,确 ...
version在概念和数据库汇是一定存在的,
我把后台查询出来的数据,var dataTest = justep.xbl("bizData1");
dataTest.loadXML(table);
放到了一个bizdata中;
然后改变了某列的值,再用的平台自带的 dataTest.saveData();  就报错了, 还要怎么给值? 手动给值?
7.png
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2021-1-20 14:59:44 | 显示全部楼层
load的table中有version吗?没有就加上
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

536

主题

1199

帖子

2586

积分

金牌会员

Rank: 6Rank: 6

积分
2586
QQ
 楼主| 发表于 2021-1-20 16:17:05 | 显示全部楼层
本帖最后由 win3394393 于 2021-1-20 16:24 编辑
jishuang 发表于 2021-1-20 14:59
load的table中有version吗?没有就加上

sql="select ZJTZ_XMJBXI.fXMID as '住建',ZJTZ_XMJBXI.version as '版本' , ZJTZ_XMJBXI.fXMMC  as  '名称' , ZJTZ_XMJBXI.fBY1  as  '备用1', ZJTZ_XMJBXI.fBY2  as  '备用2' from ZJTZ_XMJBXI ZJTZ_XMJBXI ";
现在的主要问题是,已经展示到前台数据了,但是不能编辑保存到数据库,一点击保存就报错
已经查了version    而且在前台已经展示了,这样 我把java和.W代码 都打包给你看下
java--------------
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import com.justep.system.data.DatabaseProduct;
import com.justep.system.data.ModifyState;
import com.justep.system.data.Row;
import com.justep.system.data.SQL;
import com.justep.system.data.Table;
public class KsqlTest {
public static Table ksqlSelectTest(String dataModel,String ksql) {

  ksql="select ZJTZ_XMJBXI.fXMID as '住建',ZJTZ_XMJBXI.version as '版本' , ZJTZ_XMJBXI.fXMMC  as  '名称' , ZJTZ_XMJBXI.fBY1  as  '备用1', ZJTZ_XMJBXI.fBY2  as  '备用2' from ZJTZ_XMJBXI ZJTZ_XMJBXI ";

  Map<String, String> btsqlMap = new HashMap<String, String>();
  List<Object> btparamssql = new ArrayList<Object>();
  btsqlMap.put(DatabaseProduct.DEFAULT.name(), ksql);
  Table table = SQL.select(btsqlMap, btparamssql, "/im/rd/data");
  

  return table;



js -------------------

mainActivity.model1Load = function(event){
  var dataModel = inputDataModel.value;
var ksql = textareaKSQL.value;
var actionParam = new justep.Request.ActionParam();
actionParam.setString("dataModel", dataModel);
actionParam.setString("ksql", ksql);
var r = justep.Request.sendBizRequest(null, null, "ksqlSelectTestAction", actionParam);
var table = justep.Request.getData(r.responseXML);
var columnIDs = justep.XML.getNodeText(table, "//userdata[@name='relation-alias']").split(",");
//alert(columnIDs.length);
var grid = justep.xbl("gridTest").grid;
debugger;

for (var i = 0; i < columnIDs.length; i++) {
  if (i < grid.getColumnCount()) {
   grid.columnIds = columnIDs;
  // alert(columnIDs);
   grid.setColumnLabel(i, columnIDs);
   // 恢复隐藏列
   grid.setColumnHidden(i, false);
  } else {
   // 添加新列
   grid.insertColumn(i, columnIDs, "ed", "100");
   grid.columnIds = columnIDs;
  // alert(columnIDs);
  }
}
// 隐藏多余列
for (var i = columnIDs.length; i < grid.getColumnCount(); i++) {
  grid.setColumnHidden(i, true);
}
// 初始化列
grid.initField();
var dataTest = justep.xbl("bizData1");
dataTest.loadXML(table);

};
mainActivity.trigger1Click = function(event){
debugger;
  var dataTest = justep.xbl("bizData1");

  dataTest.saveData();
};



回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2021-1-20 17:30:30 | 显示全部楼层
1.ksql返回的table中的列别名要用version,你给as为一个中文了
2.保存的action中提供的有事件,在事件中加调试跟踪看看保存时传的table是什么,里面的version是什么值
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 17:37 , Processed in 0.055911 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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