| 
注册时间2017-1-10最后登录2025-9-30阅读权限10积分351精华0帖子34
 
  
 | 
| 本帖最后由 jwf323594 于 2019-12-17 09:22 编辑 
 felt 发表于 2019-12-16 15:37  修改columnsMenu.js
 _renderColumnTigger方法
谢谢,但是这里又有一个问题,动态渲染的表头,加上 menu = new ColumnsMenu(datagrid) 方法,ColumnsMenu.js里面执行一次grid.on("update", function (e)  的方法,然后页面上点击查询后,重新动态渲染表头,这次ColumnsMenu.js里面grid.on("update", function (e)  的方法一下执行了两次,导致下拉菜单出现了两层,再点击查询,就会执行三次,这是哪里的问题?
 如图:
 然后选择企业,点击查询按钮后,表头变化后,grid.on("update", function (e)  的方法执行了2次
 
 
 部分代码如下:
 
 复制代码<script>
    mini.parse();
    var datagrid = mini.get("datagrid");
    var queryform = new mini.Form ("#queryForm");
    var company = mini.get("companyId");
    var menu;
    var companyList=company.getData();
    //getCompanyList();
    query();  //查询按钮
    function query() {
        if (queryform.validate()){
            var data = queryform.getData (true, false);
            datagrid.load(data, null, showLoadErrorMessageBox);
        }
    }
    datagrid.on("load",function(e){
        datagrid.setColumns("");
        //初始化固定不变的column
        datagrid.set({
            columns: [
                { type: "indexcolumn",width: 100,header: "检测因子",headerAlign: "center",align: "center"},
                { field: "companyId", width: 220, headerAlign: "center", header: "企业名称",align: "center"},
                { field: "monitorName", width: 140, headerAlign: "center", header: "采样地点",align: "center"},
                { field: "sampleDeepth", width: 140, headerAlign: "center", header: "采样深度",align: "center"},
                { field: "takeTime", width: 160, headerAlign: "center", header: "采样时间",align: "center"},
                { field: "sampleState", width: 120, headerAlign: "center", header: "样品状态",align: "center"},
            ]
        });
        var url="";
        if(company.getValue()==""){
            url="${ctx}/commonFunction/factorList.do?factorType=6";
        }else{
            url="${ctx}/monitorData/getSoilFactorListByCom.do?companyId="+company.getValue();
        }
        var columns=datagrid.getColumns();
        $.ajax({
            url: url,
            type: "post",
            async: false,
            success: function (text) {
                for(var i=0;i<text.length;i++){
                    var addCell=
                    {
                        field:text[i].code+"_value",
                        name:text[i].code+"_value",
                        width: 120,
                        headerAlign: "center",
                        align: "center",
                        allowSort: false,
                        header: text[i].factorName + "<br>(mg/kg)"
                    };
                    var bCell=mini.decode(addCell);
                    columns.insert(columns.length+1,bCell);
                }
            }
        });
        datagrid.setColumns(columns);
        menu = new ColumnsMenu(datagrid);
        datagrid.frozenColumns(0,4);
    });
 
 
 
 | 
 |