StringBuilder columnData=new StringBuilder();
columnData.append("[{name:'id',index:'id',label:'id',search:false, width:70, align:'center',hidden:true},");
columnData.append("{name:'bh',index:'bh',label:'编号',search:false, width:70, align:'center'},");
List<PlanColumns> commonList=this.serviceFactory.getCommonColumnsService().getCommonColumnsListByParma("module_data", tableUUid);
Map<String,String> formualMap=getExsitCalFormualColumn(commonList);
for(PlanColumns pc:commonList){
if("pic".equals(pc.getControlType())){
pc.setDisplay(0);
}
//判断下拉框的情况
String editType="";
StringBuilder editOptions=new StringBuilder();
//没有取值计算的列默认加载编辑属性
StringBuilder defaultOption = new StringBuilder();
defaultOption.append(",dataEvents:[ {").append("\n");
defaultOption.append("type: 'blur', ").append("\n");
defaultOption.append("fn: function(e) { ").append("\n");
defaultOption.append(" var rowid ; if(lastsel==undefined){").append("\n");
defaultOption.append(" rowid = $( \"#ListTable\" ).getGridParam( \"selrow\" );}else{").append("\n");
defaultOption.append(" rowid = lastsel;}").append("\n");
defaultOption.append(" jQuery('#ListTable').jqGrid('saveRow', rowid);").append("\n");
defaultOption.append(" } } ]").append("\n");
if(pc.getControlType().equals("select")){
String relateTablekey = pc.getRelateTableKey();
String relateColName = pc.getRelateDisplayColName();
List<SysDictionary> dicList = this.serviceFactory.getSysDictionaryService().findBy(relateTablekey, relateColName);
editOptions.append("{value:\"");
for(SysDictionary sysDictionary:dicList){
editOptions.append(sysDictionary.getId()).append(":").append(sysDictionary.getValue()).append(";");
}
if(editOptions.toString().endsWith(";")){
editOptions.deleteCharAt(editOptions.length()-1);
editOptions.append("\"");
defaultOption.setLength(0);
defaultOption.append(",dataEvents:[ {").append("\n");
defaultOption.append("type: 'change', ").append("\n");
defaultOption.append("fn: function(e) { ").append("\n");
defaultOption.append(" var rowid ; if(lastsel==undefined){").append("\n");
defaultOption.append(" rowid = $( \"#ListTable\" ).getGridParam( \"selrow\" );}else{").append("\n");
defaultOption.append(" rowid = lastsel;}").append("\n");
defaultOption.append(" jQuery('#ListTable').jqGrid('saveRow', rowid);").append("\n");
defaultOption.append(" } } ]").append("\n");
editOptions.append(defaultOption);
editOptions.append("}");
}
editType= String.format("edittype:\"select\", editoptions:%s", editOptions.toString());
}else if(pc.getControlType().equals("textarea")||pc.getControlType().equals("richtext")){
editOptions.append("{rows : \"2\",cols : \"25\"");
editOptions.append(defaultOption);
editOptions.append("}");
editType= String.format("edittype:\"textarea\", editoptions:%s", editOptions.toString());
}else{
StringBuilder editrules=new StringBuilder();
editOptions.append("{size:25").append("\n") ;
if("double".equals(pc.getDataType())||"integer".equals(pc.getDataType())||"long".equals(pc.getDataType())){
editrules.append("{number:true, required:true}");
if(formualMap.containsKey(pc.getColumnName())){
String calcStr=formualMap.get(pc.getColumnName());
String[] calcArray=calcStr.split(",");
defaultOption.setLength(0);
defaultOption.append(",dataEvents:[ {").append("\n");
defaultOption.append("type: 'blur', ").append("\n");
defaultOption.append("fn: function(e) { ").append("\n");
defaultOption.append(" var rowid ; if(lastsel==undefined){").append("\n");
defaultOption.append(" rowid = $( \"#ListTable\" ).getGridParam( \"selrow\" );}else{").append("\n");
defaultOption.append(" rowid = lastsel;}").append("\n");
defaultOption.append(" var data = $(\"#ListTable\").jqGrid(\"getRowData\", rowid);").append("\n");
for(String formula:calcArray){
//获取当前行的数据集合
if(formula.contains("#")){
String firstCol=formula.split("#")[0];
String sedCol=formula.split("#")[1];
int i=0;
for(String _key : formualMap.keySet()){
defaultOption.append(" var selid"+ i+" = '#'+rowid +'_"+_key+"';").append("\n").append("var value"+i+"=$(selid"+ i+").val();").append("\n");
sedCol = sedCol.replaceAll(_key, "parseFloat(value"+i+")");
i++;
}
defaultOption.append(" var selid = '#'+rowid +'_"+firstCol+"';").append("\n");
defaultOption.append(" data[\"").append(firstCol).append("\"]=").append(sedCol).append(";").append("\n");
defaultOption.append(" $(selid).attr(\"value\",").append("data[\"").append(firstCol).append("\"]").append(");").append("\n");
}
}
//设置关联字段赋值
/*defaultOption.append(" var rowid = $( \"#ListTable\" ).getGridParam( \"selrow\" );").append("\n"); */
defaultOption.append(" jQuery('#ListTable').jqGrid('saveRow', rowid);").append("\n");
defaultOption.append(" } } ]").append("\n");
editOptions.append(defaultOption);
}else{
editOptions.append(defaultOption);
}
}else{
editOptions.append(defaultOption);
}
/*else if("date".equals(pc.getDataType())){//date类型的数据暂不做处理
editrules.append("{date:true, required:true}");
}*/
editOptions.append(" }").append("\n");
editType= String.format("editrules:%s, editoptions:%s", editrules.length()>0?editrules.toString():"\"empty\"", editOptions.toString());
}
columnData.append("{name:'"+pc.getColumnName()+"',index:'"+pc.getColumnName()+"', label:'"+pc.getColumnText()+"',width:"+(pc.getWidthSet()==null? 200 : pc.getWidthSet())+",search:"+(pc.getSearch()==1? true:false)+",hidden:"+(pc.getDisplay()==1?false:true)+",align:'center',editable:"+(pc.getEdit()==1? true:false)+","+editType+"},");
}
String result=columnData.substring(0, columnData.length()-1)+"]";
request.setAttribute("columnData", result);