开发

开发

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

个性开发admin 发表了文章 • 0 个评论 • 54 次浏览 • 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 个评论 • 47 次浏览 • 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 影响太大。
 
 

Weblogic环境部署Jxstar程序,更新js文件后无效

开发工具admin 发表了文章 • 0 个评论 • 48 次浏览 • 2018-08-13 11:39 • 来自相关话题

 
weblogic 应用 eampro 的部署路径为:
D:\oracle\Middleware\user_projects\domains\base_domain\servers\eamserver2\stage\eampro\eampro但集群系统主节点应用域名为 bfda_domain ,而当前节点的应用域名为 base_domain ,造成js文件上传到上面的路径后,应用还是加载不到最新的js文件。
 
报如下错误信息:<2018-8-10 下午08时27分25秒 CST> <Error> <HTTP> <BEA-101019> <[ServletContext@48246386[app:eampro module:eampro path: spec-version:2.5]] Servlet failed with IOException
java.io.IOException: failed to read '22' bytes from InputStream; clen: 6439 remaining: 22 count: 6417
at weblogic.servlet.internal.ChunkOutput.writeStream(ChunkOutput.java:466)
at weblogic.servlet.internal.CharsetChunkOutput.writeStream(CharsetChunkOutput.java:221)
at weblogic.servlet.internal.ChunkOutputWrapper.writeStream(ChunkOutputWrapper.java:192)
at weblogic.servlet.internal.ServletOutputStreamImpl.writeStream(ServletOutputStreamImpl.java:555)
at weblogic.servlet.internal.ServletOutputStreamImpl.writeStream(ServletOutputStreamImpl.java:544)
Truncated. see log file for complete stacktrace
解决方案:
添加 WEB-INF\weblogic.xml 文件,内容如下:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app
PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN"
"http://www.bea.com/servers/wls ... gt%3B
<weblogic-web-app>
<jsp-descriptor>
<page-check-seconds>0</page-check-seconds>
</jsp-descriptor>
<container-descriptor>
<resource-reload-check-secs>0</resource-reload-check-secs>
</container-descriptor>
</weblogic-web-app>
如果要实现 contextpath 为 / 则需要在上面的文件添加一行 
<context-root></context-root>
  查看全部
 
weblogic 应用 eampro 的部署路径为:
D:\oracle\Middleware\user_projects\domains\base_domain\servers\eamserver2\stage\eampro\eampro
但集群系统主节点应用域名为 bfda_domain ,而当前节点的应用域名为 base_domain ,造成js文件上传到上面的路径后,应用还是加载不到最新的js文件。
 
报如下错误信息:
<2018-8-10 下午08时27分25秒 CST> <Error> <HTTP> <BEA-101019> <[ServletContext@48246386[app:eampro module:eampro path: spec-version:2.5]] Servlet failed with IOException
java.io.IOException: failed to read '22' bytes from InputStream; clen: 6439 remaining: 22 count: 6417
at weblogic.servlet.internal.ChunkOutput.writeStream(ChunkOutput.java:466)
at weblogic.servlet.internal.CharsetChunkOutput.writeStream(CharsetChunkOutput.java:221)
at weblogic.servlet.internal.ChunkOutputWrapper.writeStream(ChunkOutputWrapper.java:192)
at weblogic.servlet.internal.ServletOutputStreamImpl.writeStream(ServletOutputStreamImpl.java:555)
at weblogic.servlet.internal.ServletOutputStreamImpl.writeStream(ServletOutputStreamImpl.java:544)
Truncated. see log file for complete stacktrace

解决方案:
添加 WEB-INF\weblogic.xml 文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app
PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN"
"http://www.bea.com/servers/wls ... gt%3B
<weblogic-web-app>
<jsp-descriptor>
<page-check-seconds>0</page-check-seconds>
</jsp-descriptor>
<container-descriptor>
<resource-reload-check-secs>0</resource-reload-check-secs>
</container-descriptor>
</weblogic-web-app>

如果要实现 contextpath 为 / 则需要在上面的文件添加一行 
<context-root></context-root>
 

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

个性开发admin 发表了文章 • 0 个评论 • 49 次浏览 • 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文件在附件中。

mui在android5中,webview网页中的input没法聚焦的问题

移动开发admin 发表了文章 • 0 个评论 • 65 次浏览 • 2018-06-26 11:37 • 来自相关话题

通过下面方法可以解决:var ws = plus.android.currentWebview();
plus.android.invoke(ws, "requestFocus");
document.getElementById("device_code").focus();
 
或者更安全的方法:function plusReady(){
var ws = plus.android.currentWebview();
plus.android.invoke(ws, "requestFocus");
setTimeout(function(){
document.getElementById("device_code").focus();
}, 500);
}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready', plusReady, false);
} 查看全部
通过下面方法可以解决:
var ws = plus.android.currentWebview();
plus.android.invoke(ws, "requestFocus");
document.getElementById("device_code").focus();

 
或者更安全的方法:
function plusReady(){
var ws = plus.android.currentWebview();
plus.android.invoke(ws, "requestFocus");
setTimeout(function(){
document.getElementById("device_code").focus();
}, 500);
}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready', plusReady, false);
}

配置表格列显示平均值

开发工具admin 发表了文章 • 0 个评论 • 109 次浏览 • 2018-06-15 09:32 • 来自相关话题

需要显示平均值的表格字段列需要勾选“统计”,然后INC中需要添加需要算平均列的字段名称,格式如下:
 
config.param.average_fields = ['store_indet__in_num','store_mat__mat_price','store_indet__in_money'];
 
效果如下:
 





 
如果没有效果就需要更新最新的文件:public\core\JxSum.js
  查看全部
需要显示平均值的表格字段列需要勾选“统计”,然后INC中需要添加需要算平均列的字段名称,格式如下:
 
config.param.average_fields = ['store_indet__in_num','store_mat__mat_price','store_indet__in_money'];
 
效果如下:
 

a.png

 
如果没有效果就需要更新最新的文件:public\core\JxSum.js
 

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

个性开发admin 发表了文章 • 0 个评论 • 225 次浏览 • 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 个评论 • 263 次浏览 • 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
 

Java-Mail 用QQ邮箱发送邮件时报错

回复

个性开发admin 回复了问题 • 1 人关注 • 1 个回复 • 206 次浏览 • 2018-04-14 10:52 • 来自相关话题

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

个性开发admin 发表了文章 • 0 个评论 • 214 次浏览 • 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
});
}
};


Java-Mail 用QQ邮箱发送邮件时报错

回复

个性开发admin 回复了问题 • 1 人关注 • 1 个回复 • 206 次浏览 • 2018-04-14 10:52 • 来自相关话题

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

回复

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

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

个性开发admin 发表了文章 • 0 个评论 • 54 次浏览 • 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 个评论 • 47 次浏览 • 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 影响太大。
 
 

Weblogic环境部署Jxstar程序,更新js文件后无效

开发工具admin 发表了文章 • 0 个评论 • 48 次浏览 • 2018-08-13 11:39 • 来自相关话题

 
weblogic 应用 eampro 的部署路径为:
D:\oracle\Middleware\user_projects\domains\base_domain\servers\eamserver2\stage\eampro\eampro但集群系统主节点应用域名为 bfda_domain ,而当前节点的应用域名为 base_domain ,造成js文件上传到上面的路径后,应用还是加载不到最新的js文件。
 
报如下错误信息:<2018-8-10 下午08时27分25秒 CST> <Error> <HTTP> <BEA-101019> <[ServletContext@48246386[app:eampro module:eampro path: spec-version:2.5]] Servlet failed with IOException
java.io.IOException: failed to read '22' bytes from InputStream; clen: 6439 remaining: 22 count: 6417
at weblogic.servlet.internal.ChunkOutput.writeStream(ChunkOutput.java:466)
at weblogic.servlet.internal.CharsetChunkOutput.writeStream(CharsetChunkOutput.java:221)
at weblogic.servlet.internal.ChunkOutputWrapper.writeStream(ChunkOutputWrapper.java:192)
at weblogic.servlet.internal.ServletOutputStreamImpl.writeStream(ServletOutputStreamImpl.java:555)
at weblogic.servlet.internal.ServletOutputStreamImpl.writeStream(ServletOutputStreamImpl.java:544)
Truncated. see log file for complete stacktrace
解决方案:
添加 WEB-INF\weblogic.xml 文件,内容如下:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app
PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN"
"http://www.bea.com/servers/wls ... gt%3B
<weblogic-web-app>
<jsp-descriptor>
<page-check-seconds>0</page-check-seconds>
</jsp-descriptor>
<container-descriptor>
<resource-reload-check-secs>0</resource-reload-check-secs>
</container-descriptor>
</weblogic-web-app>
如果要实现 contextpath 为 / 则需要在上面的文件添加一行 
<context-root></context-root>
  查看全部
 
weblogic 应用 eampro 的部署路径为:
D:\oracle\Middleware\user_projects\domains\base_domain\servers\eamserver2\stage\eampro\eampro
但集群系统主节点应用域名为 bfda_domain ,而当前节点的应用域名为 base_domain ,造成js文件上传到上面的路径后,应用还是加载不到最新的js文件。
 
报如下错误信息:
<2018-8-10 下午08时27分25秒 CST> <Error> <HTTP> <BEA-101019> <[ServletContext@48246386[app:eampro module:eampro path: spec-version:2.5]] Servlet failed with IOException
java.io.IOException: failed to read '22' bytes from InputStream; clen: 6439 remaining: 22 count: 6417
at weblogic.servlet.internal.ChunkOutput.writeStream(ChunkOutput.java:466)
at weblogic.servlet.internal.CharsetChunkOutput.writeStream(CharsetChunkOutput.java:221)
at weblogic.servlet.internal.ChunkOutputWrapper.writeStream(ChunkOutputWrapper.java:192)
at weblogic.servlet.internal.ServletOutputStreamImpl.writeStream(ServletOutputStreamImpl.java:555)
at weblogic.servlet.internal.ServletOutputStreamImpl.writeStream(ServletOutputStreamImpl.java:544)
Truncated. see log file for complete stacktrace

解决方案:
添加 WEB-INF\weblogic.xml 文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app
PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN"
"http://www.bea.com/servers/wls ... gt%3B
<weblogic-web-app>
<jsp-descriptor>
<page-check-seconds>0</page-check-seconds>
</jsp-descriptor>
<container-descriptor>
<resource-reload-check-secs>0</resource-reload-check-secs>
</container-descriptor>
</weblogic-web-app>

如果要实现 contextpath 为 / 则需要在上面的文件添加一行 
<context-root></context-root>
 

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

个性开发admin 发表了文章 • 0 个评论 • 49 次浏览 • 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文件在附件中。

mui在android5中,webview网页中的input没法聚焦的问题

移动开发admin 发表了文章 • 0 个评论 • 65 次浏览 • 2018-06-26 11:37 • 来自相关话题

通过下面方法可以解决:var ws = plus.android.currentWebview();
plus.android.invoke(ws, "requestFocus");
document.getElementById("device_code").focus();
 
或者更安全的方法:function plusReady(){
var ws = plus.android.currentWebview();
plus.android.invoke(ws, "requestFocus");
setTimeout(function(){
document.getElementById("device_code").focus();
}, 500);
}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready', plusReady, false);
} 查看全部
通过下面方法可以解决:
var ws = plus.android.currentWebview();
plus.android.invoke(ws, "requestFocus");
document.getElementById("device_code").focus();

 
或者更安全的方法:
function plusReady(){
var ws = plus.android.currentWebview();
plus.android.invoke(ws, "requestFocus");
setTimeout(function(){
document.getElementById("device_code").focus();
}, 500);
}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready', plusReady, false);
}

配置表格列显示平均值

开发工具admin 发表了文章 • 0 个评论 • 109 次浏览 • 2018-06-15 09:32 • 来自相关话题

需要显示平均值的表格字段列需要勾选“统计”,然后INC中需要添加需要算平均列的字段名称,格式如下:
 
config.param.average_fields = ['store_indet__in_num','store_mat__mat_price','store_indet__in_money'];
 
效果如下:
 





 
如果没有效果就需要更新最新的文件:public\core\JxSum.js
  查看全部
需要显示平均值的表格字段列需要勾选“统计”,然后INC中需要添加需要算平均列的字段名称,格式如下:
 
config.param.average_fields = ['store_indet__in_num','store_mat__mat_price','store_indet__in_money'];
 
效果如下:
 

a.png

 
如果没有效果就需要更新最新的文件:public\core\JxSum.js
 

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

个性开发admin 发表了文章 • 0 个评论 • 225 次浏览 • 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 个评论 • 263 次浏览 • 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 个评论 • 214 次浏览 • 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
});
}
};


个性化开发介绍与问题