NC65参照多选
NC65参照多选实现的困难在于字段选择的值的显示,以及数据库存储数据
(1)第一步:修改AbstractRefModel类 public Object getValue(String field)方法
public Object getValue(String field) {
Object[] values = getValues(field);
Object value = null;
String strValue = "";
if (values != null && values.length > 1) {
for (Object pkobj : values) {
strValue += pkobj + ",";
}
strValue = strValue.substring(0, strValue.lastIndexOf(","));
value = strValue;
} else if(values != null && values.length > 0){
value = values[0];
}
return value;
}
(2)第二步:修改BatchMatchContext 类 public void executeBatch()方法
/**
* 批取数据,注意几种特殊的参照,要特殊处理 1、要界面处理的参照 "日历", "文件", "颜色", "计算器", "文本框"
* 2、要特殊处理集团数据, "公司目录(集团)", "公司目录(集团)S", "权限公司目录(集团)" 3、从临时表取数 会计科目多版本
*
*/
public void executeBatch() {
UIRefPane ref = null;
Object pkValue = null;
String matchSql = null;
List<String> listSql = new ArrayList<String>();
List<UIRefPane> listRef = new ArrayList<UIRefPane>();
// 常用数据参照
List<String> listBigDataSql = new ArrayList<String>();
List<UIRefPane> listBigDataRef = new ArrayList<UIRefPane>();
List<String[]> listBigDataPkvalue = new ArrayList<String[]>();
String dataSourceName = null;
for (int i = 0; i < nCount; i++) {
ref = (UIRefPane) htUIRePaneTable.get(Integer.valueOf(i));
AbstractRefModel model = ref.getRefModel();
pkValue = htPK.get(Integer.valueOf(i));
// 要界面处理的参照 "日历", "文件", "颜色", "计算器", "文本框"
if (!ref.isBatchData()) {
ref.setPK(pkValue);
continue;
}
// 基本条件要满足;
if (model == null || pkValue