企业微信发消息报错 javax.net.ssl.SSLHandshakeException

admin 发表了文章 • 0 个评论 • 1122 次浏览 • 2019-09-12 22:20 • 来自相关话题

企业微信发消息报错误信息如下:
2019-09-12 21:39:46 jxstar: qytoken url: https://qyapi.weixin.qq.com/cg ... 3Dxxx
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExce
ption: unable to find valid certification path to requested target
 
 
需要在jdk路径下加载ssl证书,导入证书步骤:
 
在浏览器路径地址旁可以导出证书。
 
然后在cmd命令窗口执行命令:
keytool -import -file c:\qy_weixin_qq_com.crt -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -alias qy_weixin
 
然后重启tomcat,发送消息执行成功。
 
--更多命令说明
--删除证书
keytool -delete -alias qy_weixin -keystore "%JAVA_HOME%\jre\lib\security\cacerts"
--查看证书
keytool -list -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit
 

附件中有截图说明与证书文件,有效期是:2020年9月10日。 查看全部
企业微信发消息报错误信息如下:
2019-09-12 21:39:46 jxstar: qytoken url: https://qyapi.weixin.qq.com/cg ... 3Dxxx
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException:
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExce
ption: unable to find valid certification path to requested target
 
 
需要在jdk路径下加载ssl证书,导入证书步骤:
 
在浏览器路径地址旁可以导出证书。
 
然后在cmd命令窗口执行命令:
keytool -import -file c:\qy_weixin_qq_com.crt -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -alias qy_weixin
 
然后重启tomcat,发送消息执行成功。
 
--更多命令说明
--删除证书
keytool -delete -alias qy_weixin -keystore "%JAVA_HOME%\jre\lib\security\cacerts"
--查看证书
keytool -list -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -storepass changeit
 

附件中有截图说明与证书文件,有效期是:2020年9月10日。

Jxstar Oracle 支持东南亚多语言数据库配置

admin 发表了文章 • 0 个评论 • 1150 次浏览 • 2018-08-14 11:46 • 来自相关话题

      由于一项目需要支持录入东南亚多语言,支持语言类型包括:中文、英语、越南语、缅甸语、柬埔寨语,软件界面与部分主数据需要支持多语言,业务数据需要支持录入东南亚语言。数据库采用Oracle,则需要设置字符集为 UTF-8 ,这样保证存储数据不会乱码。同时避免之前数据库VARCHAR2字段类型长度不够,把数据库参数设置为 NLS_LENGTH_SEMANTICS = CHAR 。
 
数据库的处理方法如下:

1、先导出 exp 现在的 jxstar_cloud 数据库为dmp文件,然后创建一个新的用户 jxstar_cloud1 , 通过 imp 导入数据,
   然后执行下面的SQL,把查询出来的SQL在jxstar_cloud1中执行一次:
select 'alter table '||table_name||'  modify '||column_name||' '||data_type||'('||DATA_LENGTH||' CHAR);' 
from user_tab_cols where data_type like '%CHAR%' and table_name in (select table_name from user_tables) order by table_name, column_name
2、然后再 exp 导出 jxstar_cloud1 用户的数据为 dmp文件。
3、重新创建一个数据库实例,字符集设置为 UTF-8 ,创建实例时,初始参数 NLS_LENGTH_SEMANTICS 设置为 CHAR ,原来的默认为 BTYE 。
4、再导入 jxstar_cloud1 用户的 dmp 文件,这样能避免在 utf8 字符集环境中,部分varchar2类型数据超长。


  查看全部
      由于一项目需要支持录入东南亚多语言,支持语言类型包括:中文、英语、越南语、缅甸语、柬埔寨语,软件界面与部分主数据需要支持多语言,业务数据需要支持录入东南亚语言。数据库采用Oracle,则需要设置字符集为 UTF-8 ,这样保证存储数据不会乱码。同时避免之前数据库VARCHAR2字段类型长度不够,把数据库参数设置为 NLS_LENGTH_SEMANTICS = CHAR 。
 
数据库的处理方法如下:

1、先导出 exp 现在的 jxstar_cloud 数据库为dmp文件,然后创建一个新的用户 jxstar_cloud1 , 通过 imp 导入数据,
   然后执行下面的SQL,把查询出来的SQL在jxstar_cloud1中执行一次:
select 'alter table '||table_name||'  modify '||column_name||' '||data_type||'('||DATA_LENGTH||' CHAR);' 
from user_tab_cols where data_type like '%CHAR%' and table_name in (select table_name from user_tables) order by table_name, column_name
2、然后再 exp 导出 jxstar_cloud1 用户的数据为 dmp文件。
3、重新创建一个数据库实例,字符集设置为 UTF-8 ,创建实例时,初始参数 NLS_LENGTH_SEMANTICS 设置为 CHAR ,原来的默认为 BTYE 。
4、再导入 jxstar_cloud1 用户的 dmp 文件,这样能避免在 utf8 字符集环境中,部分varchar2类型数据超长。


 

Oracle数据库中保存 NVARCHAR2 类型数据乱码问题处理

admin 发表了文章 • 0 个评论 • 2291 次浏览 • 2018-08-13 11:52 • 来自相关话题

Jxstar-Cloud 2.2.5 版本因需要保存 越南文,把相关字段改成 nvarchar2 类型后,直接在PLSQL工具执行SQL:
 
update funall_text set prop_value_t3 = N'Đã gửi thành công' where prop_key = 'oa-appcc.text2'
 
再查询此字段数据,数据显示正确。但在 Eclipse 环境或者 Tomcat 环境执行上面的SQL,保存的就是乱码,代码示列如下:
 
public static void test2() {
String sql = "update funall_text set prop_value_t3 = N'Đã gửi thành công' where prop_key = 'oa-appcc.text2'";
_log.showDebug("........sql="+sql);

DaoParam param = _dao.createParam(sql);
_dao.update(param);
}
Eclipse 环境中显示的提示信息都能正确显示,后来改进为预编译模式,执行正确:
public static void test2() {
String sql = "update funall_text set prop_value_t3 = ? where prop_key = 'oa-appcc.text2'";
_log.showDebug("........sql="+sql);

DaoParam param = _dao.createParam(sql);
param.addNStringValue("Đã gửi thành công");
_dao.update(param);
}
不过 Jxstar自带的 ojdbc5-1.0.jar 要升级到 ojdbc6-1.0.jar , commons-dbcp-1.3.jar 要升级到 commons-dbcp-1.4.jar 否则不支持 param.addNStringValue 方式传递参数。
 
以上问题解决花费 6个小时,看来还是老啦,解决问题的速度慢了很多!
 
由于业务数据也需要存储越南文,还包括缅甸文、高棉文等,则需要把数据库字符集类型改为 UTF-8,才行,否则所有 varchar2 类型都需要改为 nvarchar2 影响太大。
 
  查看全部
Jxstar-Cloud 2.2.5 版本因需要保存 越南文,把相关字段改成 nvarchar2 类型后,直接在PLSQL工具执行SQL:
 
update funall_text set prop_value_t3 = N'Đã gửi thành công' where prop_key = 'oa-appcc.text2'
 
再查询此字段数据,数据显示正确。但在 Eclipse 环境或者 Tomcat 环境执行上面的SQL,保存的就是乱码,代码示列如下:
 
	public static void test2() {
String sql = "update funall_text set prop_value_t3 = N'Đã gửi thành công' where prop_key = 'oa-appcc.text2'";
_log.showDebug("........sql="+sql);

DaoParam param = _dao.createParam(sql);
_dao.update(param);
}

Eclipse 环境中显示的提示信息都能正确显示,后来改进为预编译模式,执行正确:
	public static void test2() {
String sql = "update funall_text set prop_value_t3 = ? where prop_key = 'oa-appcc.text2'";
_log.showDebug("........sql="+sql);

DaoParam param = _dao.createParam(sql);
param.addNStringValue("Đã gửi thành công");
_dao.update(param);
}

不过 Jxstar自带的 ojdbc5-1.0.jar 要升级到 ojdbc6-1.0.jar , commons-dbcp-1.3.jar 要升级到 commons-dbcp-1.4.jar 否则不支持 param.addNStringValue 方式传递参数。
 
以上问题解决花费 6个小时,看来还是老啦,解决问题的速度慢了很多!
 
由于业务数据也需要存储越南文,还包括缅甸文、高棉文等,则需要把数据库字符集类型改为 UTF-8,才行,否则所有 varchar2 类型都需要改为 nvarchar2 影响太大。
 
 

Jxstar 部署CXF的webservice服务端,报错 jar不一致

admin 发表了文章 • 0 个评论 • 863 次浏览 • 2018-08-09 16:37 • 来自相关话题

如果是JDK1.6版本,则需要在tomcat目录中添加endorsed目录,把jaxb-api-2.2.3.jar、jaxb-impl-2.2.4-1.jar拷贝到此目录,否则会报错tomcat不能加载应用。
Weblogic、WebSphere中部署也存在这类错误,需要拷贝两个jar文件到JDK的安装目录中。如:/jdk1.6.0_45/jre/lib/ 中添加\endorsed 目录,把前两个jar放到此目录中。
如果是其他JDK版本需要确定 jaxb 的版本号。两个jar文件在附件中。 查看全部
如果是JDK1.6版本,则需要在tomcat目录中添加endorsed目录,把jaxb-api-2.2.3.jar、jaxb-impl-2.2.4-1.jar拷贝到此目录,否则会报错tomcat不能加载应用。
Weblogic、WebSphere中部署也存在这类错误,需要拷贝两个jar文件到JDK的安装目录中。如:/jdk1.6.0_45/jre/lib/ 中添加\endorsed 目录,把前两个jar放到此目录中。
如果是其他JDK版本需要确定 jaxb 的版本号。两个jar文件在附件中。

Jxstar 数据导入事件执行前与执行后的扩展方法 dataimp

admin 发表了文章 • 0 个评论 • 961 次浏览 • 2018-06-27 10:06 • 来自相关话题

可以在 dataimp 事件的类设置中,设置如下的类:
/*
* Copyright(c) 2017 DongHong Inc.
*/
package com.jxstar.demo.eam;

import java.util.List;
import java.util.Map;

import org.jxstar.control.action.RequestContext;
import org.jxstar.service.BusinessObject;
import org.jxstar.util.ArrayUtil;
import org.jxstar.util.JsonUtil;

/**
* 数据导入扩展测试类。
* 注册在数据导入事件“dataimp”的类设置中。
*
* @author TonyTan
* @version 1.0, 2017-6-10
*/
public class DataImpExtBO extends BusinessObject {
private static final long serialVersionUID = 1L;

/**
* 导入前的判断
* @param request
* @return
*/
public String preImp(RequestContext request) {
String srcFunId = request.getFunID();
//目标功能ID
String destFunId = request.getRequestValue("destfunid");
//其他参数有: keyid 选择记录主键数组、parentId 父记录ID
String[] keyids = request.getRequestValues("keyid");
String forKeyId = request.getRequestValue("parentId");

_log.showDebug("..............导入前事情,相关参数:");
_log.showDebug("..............来源功能ID:"+srcFunId);
_log.showDebug("..............目标功能ID:"+destFunId);
_log.showDebug("..............选择记录主键:"+ArrayUtil.arrayToString(keyids));
_log.showDebug("..............目标功能外键:"+forKeyId);

//判断示列效果
if (keyids.length > 2) {
setMessage("不能同时选择2条以上记录导入!");
return _returnFaild;
}

return _returnSuccess;
}

/**
* 导入后的扩展
* @param request
* @return
*/
public String postImp(RequestContext request) {
//格式如:[{impKeyId:"xxxx", newKeyId:"xxxx"}, {impKeyId:"xxxx", newKeyId:"xxxx"}]
String json = request.getReturnData();
_log.showDebug("..............新建主键对照:"+json);

List<Map<String,String>> lsData = JsonUtil.json2list(json);
_log.showDebug("..............解析后的数据:"+lsData);

return _returnSuccess;
}
} 查看全部
可以在 dataimp 事件的类设置中,设置如下的类:
/*
* Copyright(c) 2017 DongHong Inc.
*/
package com.jxstar.demo.eam;

import java.util.List;
import java.util.Map;

import org.jxstar.control.action.RequestContext;
import org.jxstar.service.BusinessObject;
import org.jxstar.util.ArrayUtil;
import org.jxstar.util.JsonUtil;

/**
* 数据导入扩展测试类。
* 注册在数据导入事件“dataimp”的类设置中。
*
* @author TonyTan
* @version 1.0, 2017-6-10
*/
public class DataImpExtBO extends BusinessObject {
private static final long serialVersionUID = 1L;

/**
* 导入前的判断
* @param request
* @return
*/
public String preImp(RequestContext request) {
String srcFunId = request.getFunID();
//目标功能ID
String destFunId = request.getRequestValue("destfunid");
//其他参数有: keyid 选择记录主键数组、parentId 父记录ID
String[] keyids = request.getRequestValues("keyid");
String forKeyId = request.getRequestValue("parentId");

_log.showDebug("..............导入前事情,相关参数:");
_log.showDebug("..............来源功能ID:"+srcFunId);
_log.showDebug("..............目标功能ID:"+destFunId);
_log.showDebug("..............选择记录主键:"+ArrayUtil.arrayToString(keyids));
_log.showDebug("..............目标功能外键:"+forKeyId);

//判断示列效果
if (keyids.length > 2) {
setMessage("不能同时选择2条以上记录导入!");
return _returnFaild;
}

return _returnSuccess;
}

/**
* 导入后的扩展
* @param request
* @return
*/
public String postImp(RequestContext request) {
//格式如:[{impKeyId:"xxxx", newKeyId:"xxxx"}, {impKeyId:"xxxx", newKeyId:"xxxx"}]
String json = request.getReturnData();
_log.showDebug("..............新建主键对照:"+json);

List<Map<String,String>> lsData = JsonUtil.json2list(json);
_log.showDebug("..............解析后的数据:"+lsData);

return _returnSuccess;
}
}

Jxstar平台集成-数据透视表-PivotGrid-的效果

admin 发表了文章 • 0 个评论 • 1762 次浏览 • 2018-05-12 18:20 • 来自相关话题

在功能设计器“事件注册”中导入事件“数据透视表”,在更多菜单点击此事件。





弹出下面的配置界面,需要设置好行标签、列标签、数值列,添加用拖拽的方式从左边字段栏拖到右边;取消右边字段可以双击。





常用数据透视方案可以保存。点击统计后输出效果如下:





点击右上角的导出按钮,可以导出:带透视表的Excel(Sheet2是源数据)、Excel数据、Html数据。















  查看全部
在功能设计器“事件注册”中导入事件“数据透视表”,在更多菜单点击此事件。

a.png

弹出下面的配置界面,需要设置好行标签、列标签、数值列,添加用拖拽的方式从左边字段栏拖到右边;取消右边字段可以双击。

b.png

常用数据透视方案可以保存。点击统计后输出效果如下:

c.png

点击右上角的导出按钮,可以导出:带透视表的Excel(Sheet2是源数据)、Excel数据、Html数据。

d.png


e.png


f.png

 

ExtJS 6.5.3学习笔记

admin 发表了文章 • 0 个评论 • 3458 次浏览 • 2018-05-12 18:13 • 来自相关话题

最近需要实现一个数据透视表功能,找了许多组件都不好用,如jqwidgets5.7.2等,最后采用了最新版的 ExtJS 6.5.3 的 PivotGrid 控件,集成效果见另一篇文章。
 
下面保存一下 ExtJS6的使用笔记:
 

--ExtJS GPL版,到这里下载:
https://www.sencha.com/legal/gpl/

--ExtJS试用版到这里下载:
https://www.sencha.com/products/evaluate/


Sencha Cmd 6.5.3 使用指南如下:
http://docs.sencha.com/extjs/6 ... .html
下面是创建应用的步骤:

--1、绑定SDK
sencha config --prop sencha.sdk.path=C:\D\Apache2.2\htdocs\ext-6.5.3 --save

--2、先新建一个文件夹,然后进入此文件夹再创建初始应用
sencha app init --modern PivotExp --移动模式
sencha app init --ext@6.2.0 --modern PivotExp --带中间参数报错 

sencha app init --classic PivotExp --经典模式

--sencha -sdk D:\extjs\ext-6.5.3 generate app -modern Demo D:\demo

--3、启动应用
sencha app watch

--4、调试应用URL
http://localhost:1841/ 


http://docs.sencha.com/extjs/6 ... orter
http://localhost/ext-6.5.3/bui ... -grid

--使用pivot_grid控件,总是提示找不到 pivot 包,需要下载 ext-addons-6.5.3-trial.zip ,在试用版申请邮件中有一行:
Pivot Grid, D3 Adapter, Calendar, and Exporter add-ons
下载链接类似 https://cdn.sencha.com/ext/tri ... xxxxx

--创建 sencha ExtJS 6 项目的几种方法
https://blog.csdn.net/lovelyel ... 77616

--怎么去掉顶部的 Ext JS Trial 字样
--把项目文件夹 *.scss 全文查找 'd',替换为 '' 为就可以了;
--或者 PivotExp-all_1.css 文件中的 content: 'd' 替换为 content: ''

--应用打包为发布版
sencha app build production

--发布版执行时报错 TypeError: c is not a constructor app.js 
--解决方案如下: https://www.cnblogs.com/icyhoo/p/8295162.html

--应用打包为测试版
sencha app build testing

--一般是因为 requires 类不够造成的,可以构建测试通过后在构建产品;
现在可以看到具体错误,因为无法创建 plugin.viewport,这个时候找到相关的类或文件,在Application.js  requires加入 Ext.container.Viewport
  查看全部
最近需要实现一个数据透视表功能,找了许多组件都不好用,如jqwidgets5.7.2等,最后采用了最新版的 ExtJS 6.5.3 的 PivotGrid 控件,集成效果见另一篇文章。
 
下面保存一下 ExtJS6的使用笔记:
 

--ExtJS GPL版,到这里下载:
https://www.sencha.com/legal/gpl/

--ExtJS试用版到这里下载:
https://www.sencha.com/products/evaluate/


Sencha Cmd 6.5.3 使用指南如下:
http://docs.sencha.com/extjs/6 ... .html
下面是创建应用的步骤:

--1、绑定SDK
sencha config --prop sencha.sdk.path=C:\D\Apache2.2\htdocs\ext-6.5.3 --save

--2、先新建一个文件夹,然后进入此文件夹再创建初始应用
sencha app init --modern PivotExp --移动模式
sencha app init --ext@6.2.0 --modern PivotExp --带中间参数报错 

sencha app init --classic PivotExp --经典模式

--sencha -sdk D:\extjs\ext-6.5.3 generate app -modern Demo D:\demo

--3、启动应用
sencha app watch

--4、调试应用URL
http://localhost:1841/ 


http://docs.sencha.com/extjs/6 ... orter
http://localhost/ext-6.5.3/bui ... -grid

--使用pivot_grid控件,总是提示找不到 pivot 包,需要下载 ext-addons-6.5.3-trial.zip ,在试用版申请邮件中有一行:
Pivot Grid, D3 Adapter, Calendar, and Exporter add-ons
下载链接类似 https://cdn.sencha.com/ext/tri ... xxxxx

--创建 sencha ExtJS 6 项目的几种方法
https://blog.csdn.net/lovelyel ... 77616

--怎么去掉顶部的 Ext JS Trial 字样
--把项目文件夹 *.scss 全文查找 'd',替换为 '' 为就可以了;
--或者 PivotExp-all_1.css 文件中的 content: 'd' 替换为 content: ''

--应用打包为发布版
sencha app build production

--发布版执行时报错 TypeError: c is not a constructor app.js 
--解决方案如下: https://www.cnblogs.com/icyhoo/p/8295162.html

--应用打包为测试版
sencha app build testing

--一般是因为 requires 类不够造成的,可以构建测试通过后在构建产品;
现在可以看到具体错误,因为无法创建 plugin.viewport,这个时候找到相关的类或文件,在Application.js  requires加入 Ext.container.Viewport
 

在一个功能中通过弹出窗口的方式打开另一个功能的表格或者表单

admin 发表了文章 • 0 个评论 • 1004 次浏览 • 2018-03-30 16:44 • 来自相关话题

--在表格中选择某条记录,打开一个弹出窗口,显示另一个功能的表单界面,表格的INC示列代码如下:
--参考功能:功能设计器 -- 更多 -- 扩展页面定义config.eventcfg = {
setFunext: function(){
var records = this.grid.getSelectionModel().getSelections();
if (!JxUtil.selectone(records)) return;
var selfunid = records[0].get('fun_base__fun_id');

//加载Form数据
var hdcall = function(page) {
//设置外键键
page.getForm().fkName = 'fun_ext__fun_id';
page.getForm().fkValue = selfunid;

//加载显示数据
var options = {
where_sql: 'fun_ext.fun_id = ?',
where_type: 'string',
where_value: selfunid,
callback: function(data) {
//如果没有数据则执行新增
if (data.length == 0) {
page.formNode.event.create();
} else {
var r = page.formNode.event.newRecord(data[0]);

page.getForm().myRecord = r;
page.getForm().loadRecord(r);
}
}
};
Jxstar.queryData('fun_ext', options);
};

//显示数据
var define = Jxstar.findNode('fun_ext');
Jxstar.showData({
filename: define.formpage,
title: define.nodetitle,
width: 500,
height: 250,
callback: hdcall
});
}
}
--在表单打开一个弹出窗口,显示另一个功能的表单界面,表单的INC示列代码如下:config.eventcfg = {
setFunext: function(){
var keyid = this.getPkField().getValue();--取主键值
var myform = this.form;
var selfunid = myform.get("fun_base__fun_id");

--打开表单的方法同上
...
}
}
--在表格中打开一个弹出窗口,显示另一个功能的布局页面,双击表格记录可以切换到表单,表格的INC示列代码如下:config.eventcfg = {
mywin: function(){
var records = this.grid.getSelectionModel().getSelections();
if (!JxUtil.selectone(records)) return;
//var selfunid = records[0].get('fun_base__fun_id');

//加载Form数据
var hdcall = function(layout) {
//过滤条件
var where_sql = 'store_in.in_id like ?';
var where_type = 'string';
var where_value = '%';//查询条件根据实际情况修改

//加载数据
JxUtil.delay(500, function(){
var grid = layout.getComponent(0).getComponent(0);
if (!grid) {
alert('没有找到表格对象!'); return;
}
Jxstar.loadData(grid, {where_sql:where_sql, where_value:where_value, where_type:where_type});
});
};

//显示数据
var define = Jxstar.findNode('store_in');
Jxstar.showData({
nodedefine: define,
filename: define.layout,
title: define.nodetitle,
width: 900,
height: 650,
callback: hdcall
});
}
}
--在表格中打开一个弹出窗口,显示另一个功能的表格,表格的INC示列代码如下:
--参考功能:系统设置 -- 权限设置 -- 用户注册 -- “所属角色”按钮config.eventcfg = {
setRole: function(){
var records = this.grid.getSelectionModel().getSelections();
if (!JxUtil.selectone(records)) return;

var pkcol = this.define.pkcol;
var seluserid = records[0].get(pkcol);

//过滤条件
var where_sql = 'sys_user_role.user_id = ?';
var where_type = 'string';
var where_value = seluserid;

//加载数据
var hdcall = function(grid) {
//显示数据
JxUtil.delay(500, function(){
//设置外键值
grid.fkValue = where_value;
Jxstar.loadData(grid, {where_sql:where_sql, where_value:where_value, where_type:where_type});
});
};

var srcDefine = Jxstar.findNode('sys_user_role');
//显示数据
Jxstar.showData({
filename: srcDefine.gridpage,
title: srcDefine.nodetitle,
pagetype: 'subgrid',
nodedefine: srcDefine,
callback: hdcall
});
}
}; 查看全部
--在表格中选择某条记录,打开一个弹出窗口,显示另一个功能的表单界面,表格的INC示列代码如下:
--参考功能:功能设计器 -- 更多 -- 扩展页面定义
config.eventcfg = {
setFunext: function(){
var records = this.grid.getSelectionModel().getSelections();
if (!JxUtil.selectone(records)) return;
var selfunid = records[0].get('fun_base__fun_id');

//加载Form数据
var hdcall = function(page) {
//设置外键键
page.getForm().fkName = 'fun_ext__fun_id';
page.getForm().fkValue = selfunid;

//加载显示数据
var options = {
where_sql: 'fun_ext.fun_id = ?',
where_type: 'string',
where_value: selfunid,
callback: function(data) {
//如果没有数据则执行新增
if (data.length == 0) {
page.formNode.event.create();
} else {
var r = page.formNode.event.newRecord(data[0]);

page.getForm().myRecord = r;
page.getForm().loadRecord(r);
}
}
};
Jxstar.queryData('fun_ext', options);
};

//显示数据
var define = Jxstar.findNode('fun_ext');
Jxstar.showData({
filename: define.formpage,
title: define.nodetitle,
width: 500,
height: 250,
callback: hdcall
});
}
}

--在表单打开一个弹出窗口,显示另一个功能的表单界面,表单的INC示列代码如下:
config.eventcfg = {
setFunext: function(){
var keyid = this.getPkField().getValue();--取主键值
var myform = this.form;
var selfunid = myform.get("fun_base__fun_id");

--打开表单的方法同上
...
}
}

--在表格中打开一个弹出窗口,显示另一个功能的布局页面,双击表格记录可以切换到表单,表格的INC示列代码如下:
config.eventcfg = {
mywin: function(){
var records = this.grid.getSelectionModel().getSelections();
if (!JxUtil.selectone(records)) return;
//var selfunid = records[0].get('fun_base__fun_id');

//加载Form数据
var hdcall = function(layout) {
//过滤条件
var where_sql = 'store_in.in_id like ?';
var where_type = 'string';
var where_value = '%';//查询条件根据实际情况修改

//加载数据
JxUtil.delay(500, function(){
var grid = layout.getComponent(0).getComponent(0);
if (!grid) {
alert('没有找到表格对象!'); return;
}
Jxstar.loadData(grid, {where_sql:where_sql, where_value:where_value, where_type:where_type});
});
};

//显示数据
var define = Jxstar.findNode('store_in');
Jxstar.showData({
nodedefine: define,
filename: define.layout,
title: define.nodetitle,
width: 900,
height: 650,
callback: hdcall
});
}
}

--在表格中打开一个弹出窗口,显示另一个功能的表格,表格的INC示列代码如下:
--参考功能:系统设置 -- 权限设置 -- 用户注册 -- “所属角色”按钮
config.eventcfg = {
setRole: function(){
var records = this.grid.getSelectionModel().getSelections();
if (!JxUtil.selectone(records)) return;

var pkcol = this.define.pkcol;
var seluserid = records[0].get(pkcol);

//过滤条件
var where_sql = 'sys_user_role.user_id = ?';
var where_type = 'string';
var where_value = seluserid;

//加载数据
var hdcall = function(grid) {
//显示数据
JxUtil.delay(500, function(){
//设置外键值
grid.fkValue = where_value;
Jxstar.loadData(grid, {where_sql:where_sql, where_value:where_value, where_type:where_type});
});
};

var srcDefine = Jxstar.findNode('sys_user_role');
//显示数据
Jxstar.showData({
filename: srcDefine.gridpage,
title: srcDefine.nodetitle,
pagetype: 'subgrid',
nodedefine: srcDefine,
callback: hdcall
});
}
};


主表单新增保存后,子表格的按钮还是灰色的

回复

admin 发起了问题 • 1 人关注 • 0 个回复 • 1235 次浏览 • 2018-03-30 11:14 • 来自相关话题