datagrid动态加载列名和数据,附上源码

html代码
<div style="height:85%" >
<table id="enterGroupListDG" class="easyui-datagrid" title="动态表单查询" fit="true" style="width:auto;height:auto"
      data-options="singleSelect:true,collapsible:true,fitColumns:false">
</table>
</div>
js代码
$.ajax({
    type: "post",
    url: CONTEXT_PATH+"/task/XX.xhtml",
    async: true,
    dataType: "json",
    data: {
        page:pages,
        rows:pageNumber,
        groupId:groupId,
        taskNumber:taskNumber,
        haveValus:haveValus,
        type:type,
        formID:formID,
        moduleID:moduleID,
        status:status

    },
    success: function (data) {
        console.log(data);
        if(data.formData=='[]'){
            alert("暂无数据");
        }else{
            $(".axc-success").show().delay(3000).fadeOut();
        }
        var msg = JSON.parse(data.formDataTitle);
        var formData = JSON.parse(data.formData);
        $("#enterGroupListDG").datagrid({
            columns: [msg]   ,//动态取标题
            data:formData
        });
    }
});

java代码

/**
 * @Author: LGH
 * @Description: 查询数据采集完成情况
 * @param: taskCustomSearchQo
 * @DATA: Created in 10:14 2017/11/8
 */
@RequestMapping(value="/xx.xhtml",method = { RequestMethod.GET, RequestMethod.POST })
public @ResponseBody
DataEasyUIDataGradOutputModel<TaskCustomVo> queryPaging(TaskCustomSearchQo taskCustomSearchQo, HttpServletRequest request) throws Exception {
    //获取用户id
    DataEasyUIDataGradOutputModel<TaskCustomVo> output = new DataEasyUIDataGradOutputModel<>();
    Integer userId =getCurrentUser();
    if(userId==null)
        userId=0;
    taskCustomSearchQo.setUserId(userId);
    Page<TaskCustomVo> pages = taskCustomService.queryTaskCustomList(taskCustomSearchQo);
    List<TaskCustomVo> taskCustomVoList=pages.getRecords();
    List<DataFromVo> dataFromVos=new ArrayList<DataFromVo>();
    List<ModuleFormVo> moduleFormVos =new ArrayList<ModuleFormVo>();
    String moduleID=taskCustomSearchQo.getModuleID();
    String status=String.valueOf(taskCustomSearchQo.getStatus());
    //如果选择了模板id,直接取模板对应的表单字段作为表头列名,如果没有先选取模板,取第一个查到的对象的放回列作为表头列名,不建议不选取模板查询
    if (moduleID!=null&&!"".equals(moduleID)){
        moduleFormVos = taskCustomService.getMoudleFormVo(Integer.valueOf(moduleID).intValue());
    }else{
        dataFromVos= getDataFrom(taskCustomVoList);
    }
    Map<String,String> map=new HashMap<String,String>();
    map=getFromDataTitle(status, moduleFormVos,dataFromVos);
    String formdatatitles=map.get("fromtitles");
    String titleNames=map.get("titleNames");
    String formdata=getFromData(status,taskCustomVoList, taskCustomSearchQo,titleNames);
    //System.out.println("动态模板列formdatatitle"+formdatatitle);
    //System.out.println("动态列赋值formdata"+formdata);
    output.setFormDataTitle(formdatatitles);
    output.setFormData(formdata);
    //output.setRows(pages.getRecords() == null ? new ArrayList<TaskCustomVo>() : pages.getRecords());
    output.setTotal((int) pages.getTotalRows());
    return output;
}

/**
 * @Author: LGH
 * @Description:
 * @param:
 * @DATA: Created in 10:04 2017/11/16
 */
public List<DataFromVo> getDataFrom(List<TaskCustomVo> taskCustomVoList){
    List<DataFromVo> dataFromVos=new ArrayList<DataFromVo>();
    for (TaskCustomVo taskCustomVo: taskCustomVoList) {
        String formData= taskCustomVo.getFormData();
        if (formData!=null&&!"".equals(formData)){
            JSONArray jArray= JSONArray.fromObject(formData);
            for(int j=0;j<jArray.size();j++){
                JSONObject job = jArray.getJSONObject(j);  // 遍历 jsonarray 数组,把每一个对象转成 json 对象
                DataFromVo dataFromVo=new DataFromVo();
                dataFromVo.setTitle(String.valueOf(job.get("title")));
                dataFromVo.setContent(String.valueOf(job.get("content")));
                dataFromVo.setFormId(String.valueOf(job.get("formId")));
                dataFromVos.add(dataFromVo);
            }
        }
        break;
    }
    return  dataFromVos;
}

/**
 * @Author: LGH
 * @Description: 动态获取列名
 * @param:
 * @DATA: Created in 18:35 2017/11/13
 */
public Map<String,String> getFromDataTitle(String status, List<ModuleFormVo> moduleFormVos,List<DataFromVo> dataFromVos){
        StringBuilder jsonBuilder = new StringBuilder();
        StringBuilder titleNames=new StringBuilder();
        Map<String,String> map=new HashMap<String,String>();

        jsonBuilder.append("[");
        jsonBuilder.append("{\"field\":\"number\",\"title\":\"序号\"},");
        jsonBuilder.append("{\"field\":\"title\",\"title\":\"任务名称\"},");
        jsonBuilder.append("{\"field\":\"groupNames\",\"title\":\"任务所属区域\"},");
        //jsonBuilder.append("{\"field\":\"title\",\"title\":\"标题\"},");
        jsonBuilder.append("{\"field\":\"status\",\"title\":\"状态\"},");
        //这是循环获取列名称
        int i = 1;
        if (status!=null&&"4".equals(status)) {
            if (moduleFormVos != null && moduleFormVos.size() > 0) {
                for (ModuleFormVo moduleFormVo : moduleFormVos) {
                    jsonBuilder.append("{");
                    jsonBuilder.append("\"field");
                    jsonBuilder.append("\":\"");
                    jsonBuilder.append("vName" + i);
                    jsonBuilder.append("\",");
                    jsonBuilder.append("\"title");
                    jsonBuilder.append("\":\"");
                    jsonBuilder.append(moduleFormVo.getTitle());
                    titleNames.append(moduleFormVo.getTitle() + ",");
                    jsonBuilder.append("\"");
                    jsonBuilder.append("},");
                    i++;
                }
            } else {
                for (DataFromVo dataFromVo : dataFromVos) {
                    jsonBuilder.append("{");
                    jsonBuilder.append("\"field");
                    jsonBuilder.append("\":\"");
                    jsonBuilder.append("vName" + i);
                    jsonBuilder.append("\",");
                    jsonBuilder.append("\"title");
                    jsonBuilder.append("\":\"");
                    jsonBuilder.append(dataFromVo.getTitle());
                    titleNames.append(dataFromVo.getTitle() + ",");
                    jsonBuilder.append("\"");
                    jsonBuilder.append("},");
                    i++;
                }
            }
            String titleName = titleNames.substring(0, titleNames.length()-1);
            map.put("titleNames",titleName);
        }

         String newstr = jsonBuilder.substring(0, jsonBuilder.length()-1);
         newstr += "]";
         map.put("fromtitles",newstr);


    return map;
}





/**
 * @Author: LGH
 * @Description: 获取动态列对于的数据
 * @param:
 * @DATA: Created in 18:35 2017/11/13
 */
public  String getFromData( String status,List<TaskCustomVo> taskCustomVoList,TaskCustomSearchQo taskCustomSearchQo,String titleNames) {
    JSONArray jsonArray =new JSONArray();
    JSONObject jsonObject=new JSONObject();
    int number=1;
    int page=  taskCustomSearchQo.getPage();
    int rows=taskCustomSearchQo.getRows();
    if (page>1){
        number=(page-1)*rows+1;
    }
    for (TaskCustomVo taskCustomVo:taskCustomVoList) {
        jsonObject.put("number",number);
        number++;
        jsonObject.put("title",taskCustomVo.getTaskName());
        jsonObject.put("groupNames",taskCustomVo.getGroupNames());
        if (StringUtils.isNotBlank(status)){
            if ("1".equals(status)){
                jsonObject.put("status","未完成");
            }else if ("4".equals(status)){
                jsonObject.put("status","已完成");
            }else{
                jsonObject.put("status","已挂起");
            }
        }else{
            jsonObject.put("status","未完成");
        }
        if (status!=null&&"4".equals(status)) {
            int i=1;
            String formData= taskCustomVo.getFormData();
            if (formData!=null&&!"".equals(formData)){
                JSONArray jArray= JSONArray.fromObject(formData);

                String d[] = titleNames.split(",");
                for (int k = 0; k < d.length; k++) {
                    for(int j=0;j<jArray.size();j++){
                        String titlename=d[k];
                        JSONObject job = jArray.getJSONObject(j);  // 遍历 jsonarray 数组,把每一个对象转成 json 对象
                        if (titlename!=null&&titlename.equals(String.valueOf(job.get("title")))){
                            jsonObject.put("vName"+i,String.valueOf(job.get("content")));
                            i++;
                            break;
                        }
                        if (j==jArray.size()-1){
                            jsonObject.put("vName"+i,"");
                            i++;
                        }
                    }

                }
/*                for(int j=0;j<jArray.size();j++){
                    String d[] = titleNames.split(",");
                    for (int k = 0; k < d.length; i++) {
                        String titlename=d[i];
                        JSONObject job = jArray.getJSONObject(j);  // 遍历 jsonarray 数组,把每一个对象转成 json 对象
                        if (titlename!=null&&titlename.equals(String.valueOf(job.get("title")))){
                            jsonObject.put("vName"+i,String.valueOf(job.get("content")));
                            i++;
                            break;
                        }
                        if (k==d.length-1){
                            jsonObject.put("vName"+i,"");
                            i++;
                        }
                    }

                }*/
            }}
        jsonArray.add(jsonObject);
    }
    return jsonArray.toString();
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值