t:datagrid中的treegrid樹形的多表組裝


症狀:樹形圖每一層所來自不同表。

處方:

業務思想:首先明確treegrid是懶加載模式,單擊展開時,再重新去后台找出單擊的子列表數據。主要代碼解決問題在於,是否存在下級的頁面上的icon問題。由於是直接測試邊使用,並未先寫了測試例子,所以直接把代碼復制了。僅把關鍵常量改了改。

jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/context/mytags.jsp"%>
<t:base type="jquery,easyui,tools,DatePicker"></t:base>
<div id="main_list" class="easyui-layout" fit="true">
 <div region="center" style="padding:0px;border:0px">
 <t:datagrid name="projectListToTree" title="工程項目結構" actionUrl="AController.do?datagridProjectListToTree" treegrid="true" idField="id" pagination="false">
  <t:dgCol title="編號" field="id" treefield="id" hidden="false" />
  <t:dgCol title="名稱" field="name" treefield="text" />
  <t:dgCol title="操作" field="opt" width="100"></t:dgCol>
  <t:dgFunOpt funname="addCheck(id)" title="分部工程鑒定表" exp="id#eq#4_id"></t:dgFunOpt>
  <t:dgFunOpt funname="addCheck(id)" title="鑒定表" ></t:dgFunOpt>
 </t:datagrid>
 </div>
</div>

 <script type="text/javascript">
 $("#projectListToTree").treegrid({  
       onExpand : function(node){
        //$('#main_list').layout('expand','east'); 
        if(node.id[0]==1){
            //$('#commodity-panel').panel("refresh", "AController.do?constructListCheckUp&projectId="+node.id.split("_")[1]+"&checkType=1");
        }else if(node.id[0]==2){
            //$('#commodity-panel').panel("refresh", "AContractCheckupController.do?gsProjectContractCheckup&contractId="+node.id.split("_")[1]);
        }else if(node.id[0]==3){
            //$('#commodity-panel').panel("refresh", "AController.do?gsProjectWorkCheckup&workId="+node.id.split("_")[1]);
        }else{
            //$('#commodity-panel').panel("refresh", "AController.do?workSubList&workId="+node.id.split("_")[1]);
        }
      },
      onClickRow:function(node){
         // $('#main_list').layout('expand','east'); 
         // $('#commodity-panel').panel("refresh", "AController.do?constructList&projectId="+node.id.split("_")[1]+"&checkType=1");
         // $('#commodity-panel').panel('refresh', 'AController.do?projectBussList');
      }
 }); 
 
 function addCheck(id){
    createAddCheck('鑒定數據', 'AController.do?addItemRecordCheck&id='+id);
}


/**
 * 創建添加或編輯窗口
 * 
 * @param title
 * @param addurl
 * @param saveurl
 */
function createAddCheck(title, addurl,width,height) {
    width = width?width:800;
    height = height?height:350;
    if(width=="100%" || height=="100%"){
        width = document.body.offsetWidth;
        height =document.body.offsetHeight-100;
    }
    if(typeof(windowapi) == 'undefined'){
        
        $.dialog({
            content: 'url:'+addurl,
            lock : true,
            width:width,
            height:height,
            title:title,
            opacity : 0.3,
            cache:false,
            button : [{
            name : '確定',
            callback : function() {
                iframe = this.iframe.contentWindow;
                saveObj();
                //獲取頁面的值
                var orgName = $('#name', iframe.document).val();
                if(orgName != ''){
                   $(this).dialog("close");
                }else{
                   return false;
                }
                
             },
            focus : true
        }, {
            name : '關閉',
            callback : function() {
               $(this).dialog("close"); 
            }
         }]
      });
    }else{
        W.$.dialog({
            content: 'url:'+addurl,
            lock : true,
            width:width,
            height:height,
            parent:windowapi,
            title:title,
            opacity : 0.3,
            cache:false,
            button : [{
              name : '鑒定數據',
              callback : function() {
                iframe = this.iframe.contentWindow;
                saveObj();
                //獲取頁面的值
                var orgName = $('#name', iframe.document).val();
                if(orgName != ''){
                    $(this).dialog("close"); 
                }else{
                    return false;
                }
                
             },
            focus : true
        }, {
            name : '關閉',
            callback : function() {
                 $(this).dialog("close"); 
            }
         }]
        });
    }
    
}
/**
 * 執行保存
 * 
 * @param url
 * @param gridname
 */
function saveObj() {
    $('#btn_sub', iframe.document).click();
}
 </script>
<script src = "webpage/com/gs/project/projectListToTree.js"></script>

java::controller

/**
     * 工程作業鑒定,樹形展示
     * @param request
     * @param response
     * @param treegrid
     * @return
     */
    @RequestMapping(params = "datagridProjectListToTree")
    @ResponseBody
    public  List<TreeGrid>  datagridProjectListToTree(/*PtypeEntity*/TSDepart tSDepart,HttpServletRequest request, HttpServletResponse response, TreeGrid treegrid) {
        List<TreeGrid> treeGrids = new ArrayList<TreeGrid>();
     //模型 TreeGridModel treeGridModel
= new TreeGridModel(); treeGridModel.setTextField("departname"); treeGridModel.setSrc("code"); treeGridModel.setOrder("latitude"); treeGridModel.setIdField("id"); treeGridModel.setChildList("TSDeparts"); StringBuffer str = new StringBuffer(); str.append(" SELECT ID,PROJECT_NAME FROM GS_PROJECT_BUSS WHERE DELFLAG=0 "); if(treegrid.getId() != null){ } List<Record> rlist = Db.use("gl").find(str.toString()); List<TSDepart> tdp = new ArrayList<TSDepart>(); List<Map<String, Object>> list2 = new ArrayList<Map<String,Object>>(); if(treegrid.getId() != null){ // id:1_id 2_id 3_id 4_id ::分別為項目工程,合同段,單位工程,分布工程 String[] ids = treegrid.getId().split("_"); if(ids[0].equals("1")){// 項目工程下的合同段 String contract_Sql = "SELECT CONTRACT_ID,CONTRACT_NAME FROM GS_PROJECT_CONTRACT_BUSS WHERE DELFLAG=0 AND PROJECT_BUSS_ID='"+ids[1]+"'"; rlist = Db.use("gl").find(contract_Sql); for (int i = 0; i < rlist.size(); i++) { TSDepart tSDeparts1 = new TSDepart(); tSDeparts1.setId("2_"+rlist.get(i).get("CONTRACT_ID").toString()); tSDeparts1.setDepartname(rlist.get(i).get("CONTRACT_NAME").toString()); tdp.add(tSDeparts1); } list2 = new ArrayList<Map<String,Object>>(); for (int i = 0; i < rlist.size(); i++) { Map<String, Object> map2 = new HashMap<String, Object>(); if(StringUtil.isNotEmpty(rlist.get(i).getStr("CONTRACT_ID"))){ map2.put("id", "2_"+rlist.get(i).getStr("CONTRACT_ID")); map2.put("name", rlist.get(i).getStr("CONTRACT_NAME")); list2.add(map2); } } }else if(ids[0].equals("2")){// 合同段下的單位工程 String contract_Sql = "SELECT WORK_ID,WORK_NAME FROM GS_PROJECT_WORK_BUSS WHERE DELFLAG=0 AND CONTRACT_ID='"+ids[1]+"'"; rlist = Db.use("gl").find(contract_Sql); for (int i = 0; i < rlist.size(); i++) { TSDepart tSDeparts1 = new TSDepart(); tSDeparts1.setId("3_"+rlist.get(i).get("WORK_ID").toString()); tSDeparts1.setDepartname(rlist.get(i).get("WORK_NAME").toString()); tdp.add(tSDeparts1); } list2 = new ArrayList<Map<String,Object>>(); for (int i = 0; i < rlist.size(); i++) { Map<String, Object> map2 = new HashMap<String, Object>(); if(StringUtil.isNotEmpty(rlist.get(i).getStr("WORK_ID"))){ map2.put("id", "3_"+rlist.get(i).getStr("WORK_ID")); map2.put("name", rlist.get(i).getStr("WORK_NAME")); list2.add(map2); } } }else if(ids[0].equals("3")){// 單位工程下的分部工程 String contract_Sql = "SELECT WORK_SUB_ID,WORKT_SUB_NAME FROM GS_PROJECT_WORK_SUB_BUSS WHERE DELFLAG=0 AND WORK_ID='"+ids[1]+"'"; rlist = Db.use("gl").find(contract_Sql); for (int i = 0; i < rlist.size(); i++) { TSDepart tSDeparts1 = new TSDepart(); tSDeparts1.setId("4_"+rlist.get(i).get("WORK_SUB_ID").toString()); tSDeparts1.setDepartname(rlist.get(i).get("WORKT_SUB_NAME").toString()); tdp.add(tSDeparts1); } } }else{ // 項目工程 for (int i = 0; i < rlist.size(); i++) { TSDepart tSDeparts1 = new TSDepart(); tSDeparts1.setId("1_"+rlist.get(i).get("ID").toString()); tSDeparts1.setDepartname(rlist.get(i).get("PROJECT_NAME").toString()); tdp.add(tSDeparts1); } for (int i = 0; i < rlist.size(); i++) { Map<String, Object> map2 = new HashMap<String, Object>(); if(StringUtil.isNotEmpty(rlist.get(i).getStr("ID"))){ map2.put("id", "1_"+rlist.get(i).getStr("ID")); map2.put("name", rlist.get(i).getStr("PROJECT_NAME")); list2.add(map2); } } } for (int i = 0; i < list2.size(); i++) { for (int j = 0; j < tdp.size(); j++) { if(list2.get(i).get("id").equals(tdp.get(j).getId())){ TSDepart tSDeparts1 = new TSDepart(); tSDeparts1.setId(list2.get(i).get("id").toString()); tSDeparts1.setDepartname(list2.get(i).get("name").toString()); tdp.get(j).getTSDeparts().add(tSDeparts1); } } } treeGrids = systemService.treegrid(tdp, treeGridModel); return treeGrids; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM