easyui使用ajax请求后台结合datagrid分页和动态设置行头

需求:最近公司有个功能需要查询后台数据在前台展示,展示的行头会根据后台的数据显示数据(如数据中的一个环节list,不同的数据这个list长度不一样),还要分页展示;

一下是源码:

function loadGrid(){

       if(!$("#queryForm").form('validate')) {//判断查询参数是否为空
    return false;
  }
  var paramData = $('#queryForm').serializeJson();//获取参数
  showPanelRefreshTip("#segmentDetailsDiv");//查询提示
  $.ajax({
    type : 'POST',
    dataType : "json",
    url : contextPath + queryRouteNewUrl,
    data : paramData,
    //contentType : 'application/x-www-form-urlencoded',
    //processData : false,//此处一定要注意,如果是false有可能后台获取不到参数
    //traditional : true,
    success : function(data,success) {
      hidePanelRefreshTip("#segmentDetailsDiv");
      var columns;
      if (success == 'success' && data.success == true && data.rows){
        columns = getMainLineBaseInfoColumns(data.maxSize);//动态拼接行头
        $('#routeGrid').datagrid({//表格
          singleSelect : true,
          pagination : true,//开启分页
          pagePosition : 'bottom',//翻页显示在底部
          columns : [columns],
          rownumbers : true//显示序号
        }).datagrid('loadData',data.rows.slice(0,10));//加载数据显示10条数据

        var pager = $("#routeGrid").datagrid("getPager"); //获取表格
        pager.pagination({
          total:data.total, //总数据条数
          onSelectPage:function (pageNo, pageSize) { //翻页
            var start = (pageNo - 1) * pageSize;
            var end = start + pageSize;
            $('#routeGrid').datagrid("loadData", data.rows.slice(start, end));
            pager.pagination('refresh', {
              total:data.total,
              pageNumber:pageNo
            });
          }
        });
      }else {
        showInfoMsg('没有查询到路由信息');
      }
    },
    error : function(){
      hidePanelRefreshTip("#segmentDetailsDiv");
      showErrorMsg('查询路由信息错误!');
    }
  });
}

 

动态拼接行头:

function getMainLineBaseInfoColumns(maxSizeProperty) {
  var mainLineBaseInfoColumns =[
    {field : 'routeVersion',align : 'center',width : 80,title : '路由版本日期'},
    {field : 'deliverTimePeriodDesc',align : 'center',width : 80,title : '寄件时间归段'},
    {field : 'startCity',align : 'center',width : 80,title : '始发城市'},
    {field : 'startBatchCode',align : 'center',width : 80,title : '始发班次编码'},
    {field : 'destCity',align : 'center',width : 80,title : '目的城市'},
    {field : 'destBatchCode',align : 'center',width : 80,title : '目的地班次编码'},
    {field : 'productType',align : 'center',width : 80,title : '产品类型'},
    {field : 'keyConveyance',align : 'center',width : 80,title : '关键运力类型'},
    {field : 'costTime',align : 'center',width : 80,title : '总耗时'},
    {field : 'routeEffectTm',align : 'center',width : 80,title : '静态时效'},
    {field : 'effectPeriodDay',align : 'center',width : 80,title : '静态时效归段'},
    {field : 'promiseTime',align : 'center',width : 80,title : '承诺时效'},
    {field : 'effectReach',align : 'center',width : 80,title : '时效是否达成'},
    {field : 'routeType',align : 'center',width : 80,title : '路由类型'},
    {field : 'workDay',align : 'center',width : 80,title : '适应工作日'}];
  for (var i = 0; i < maxSizeProperty; i++) {//重点是这里的,跟据后台的数据拼接显示行头
    var column = {};
    column["field"] = "segment" + (i+1);
    column["align"] = "center";
    column["width"] = 80;
    column["title"] = "环节"+(i+1);
    mainLineBaseInfoColumns.push(column);
  }
  return mainLineBaseInfoColumns;
}

效果图:

遗留问题:如果后台有50条数据,50条数据中最大环节数如果是第25条数据的20环;在展示1-10的数据时,这10条数据中最大环节如果只有15环,拼接出来的行头永远是25环,展示1-10的数据时就会有5个多余的空格列,其它页面也有此问题;

只有展示20-30的数据时才是最合适的。

 

转载于:https://www.cnblogs.com/zhouyangsong/p/10616385.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值