`
jadewoo
  • 浏览: 86019 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

jquery结合ibatis构造复杂表格

 
阅读更多
1、先构造好表头,即一级表头。表头的标题要跨多少行或者列需先写好,写死标题简单些,查数据库比较复杂。
例如:var col="[[{field:'AREANAME',title:'地市',width:50,rowspan:2} ,";
col += "{title:'一级表头1',align:'right',colspan:"+3+" },";
col += "{title:'一级表头2',align:'right',colspan:"+4+" },";

2、结合sum case sql语句和jquery的表格显示格式构造二级表头和表体。jquery的filed:name,name对于sql语句的字段名,sql语句的case when=“第一级标题名称”。
例如:
for(var i=0;i<2;i++){//找出需要显示的列,这里比如只有表头1和表头2
var index = i+1;
col+="{field:'YUESHIJIZHI"+index+"',title:'实际值',width:60,align:'right'},";
caseSql+='sum(case when t3.timeCd='一级表头1' then t3.YUESHIJIZHI else 0 end) YUESHIJIZHI'+index+' ,';
col+="{field:'YUEWANCHENGJINDU"+index+"',title:'月完成进度',width:60,align:'right'},";
caseSql+='sum(case when t3.timeCd='一级表头2' then t3.YUEWANCHENGJINDU else 0 end) YUEWANCHENGJINDU'+index+' ,';
}
3、代码示例:
/**生成数据区表格----获取月份列**/
function makeDataTable() {
var month = $('#month').val();
var monthSection = $('#monthSection').val();
if (monthSection == "" || monthSection == null) {
monthSection = 2;
}
var paramStr = "month="+removeYearMonth(month)+"&monthSection="+monthSection;
$.ajax({
type: "post",
contentType: "application/x-www-form-urlencoded; charset=utf-8",
url : "/com.linkage.bi3.operateMoniter.module.KPIQueryModule.gotoJson(kpi_query,getAllMonth).db(tdssyn).invoke",
dataType:'json',
data: paramStr,
success: function(json){
var rowsed = json.rows;
if (rowsed.length > 0 && attrArr.length > 0) {
makeDataGrid(rowsed);
}
}
});
}
/**生成数据区表格----获取数据值**/
function makeDataGrid(rowsed) {
var rowFlag = true;
var caseSql = "";
var col="[[{field:'AREANAME',title:'地市',width:50,rowspan:2} ,";
for(var i=0;i<rowsed.length;i++){
if(i>0) {
    if(rowsed[i].TIMECD == rowsed[i-1].TIMECD) {
rowFlag = false;
    }
    if(rowsed[i].TIMECD != rowsed[i-1].TIMECD) {
rowFlag = true;
    }
    }
    var colspan = 0;
    for (var k = 0; k < attrArr.length; k++) {
    if (attrArr[k] == 1) {
    colspan++;
    }
    }
if(rowFlag) {
    col += "{title:'"+rowsed[i].TIMECD+"',align:'right',colspan:"+colspan+" },";
}
}
col=col.substring(0,col.length-1);
col+="],[";

for(var i=0;i<rowsed.length;i++){//找出需要显示的列
var index = i+1;
if (attrArr[0] == 1) {
col+="{field:'YUESHIJIZHI"+index+"',title:'实际值',width:60,align:'right',formatter:function(val,rec){return formatInte(val)}},";
caseSql+='sum(case when t3.timeCd='+rowsed[i].TIMECD+' then t3.YUESHIJIZHI else 0 end) YUESHIJIZHI'+index+' ,';
}
if (attrArr[1] == 1) {
col+="{field:'YUEWANCHENGJINDU"+index+"',title:'月完成进度',width:60,align:'right',formatter:function(val,rec){return formatNuber(val)}},";
caseSql+='sum(case when t3.timeCd='+rowsed[i].TIMECD+' then t3.YUEWANCHENGJINDU else 0 end) YUEWANCHENGJINDU'+index+' ,';
}
if (attrArr[2] == 1) {
col+="{field:'YUEMUBIAOCHAJU"+index+"',title:'月目标差距',width:60,align:'right',formatter:function(val,rec){return formatInte(val)}},";
caseSql+='sum(case when t3.timeCd='+rowsed[i].TIMECD+' then t3.YUEMUBIAOCHAJU else 0 end) YUEMUBIAOCHAJU'+index+' ,';
}
if (attrArr[3] == 1) {
col+="{field:'YUEHUANBI"+index+"',title:'月环比',width:60,align:'right',formatter:function(val,rec){return formatNuber(val)}},";
caseSql+='sum(case when t3.timeCd='+rowsed[i].TIMECD+' then t3.YUEHUANBI else 0 end) YUEHUANBI'+index+' ,';
}
if (attrArr[4] == 1) {
col+="{field:'YUETONGBI"+index+"',title:'月同比',width:60,align:'right',formatter:function(val,rec){return formatNuber(val)}},";
caseSql+='sum(case when t3.timeCd='+rowsed[i].TIMECD+' then t3.YUETONGBI else 0 end) YUETONGBI'+index+' ,';
}
if (attrArr[5] == 1) {
col+="{field:'YUEZHANBI"+index+"',title:'月占比',width:60,align:'right',formatter:function(val,rec){return formatNuber(val)}},";
caseSql+='sum(case when t3.timeCd='+rowsed[i].TIMECD+' then t3.YUEZHANBI else 0 end) YUEZHANBI'+index+' ,';
}
if (attrArr[6] == 1) {
col+="{field:'LEIJISHIJIZHI"+index+"',title:'累计实际值',width:60,align:'right',formatter:function(val,rec){return formatInte(val)}},";
caseSql+='sum(case when t3.timeCd='+rowsed[i].TIMECD+' then t3.LEIJISHIJIZHI else 0 end) LEIJISHIJIZHI'+index+' ,';
}
if (attrArr[7] == 1) {
col+="{field:'LEIJIWANCHENGJINDU"+index+"',title:'累计完成进度',width:60,align:'right',formatter:function(val,rec){return formatNuber(val)}},";
caseSql+='sum(case when t3.timeCd='+rowsed[i].TIMECD+' then t3.LEIJIWANCHENGJINDU else 0 end) LEIJIWANCHENGJINDU'+index+' ,';
}
if (attrArr[8] == 1) {
col+="{field:'LEIJIMUBIAOCHAJU"+index+"',title:'累计目标差距',width:60,align:'right',formatter:function(val,rec){return formatInte(val)}},";
caseSql+='sum(case when t3.timeCd='+rowsed[i].TIMECD+' then t3.LEIJIMUBIAOCHAJU else 0 end) LEIJIMUBIAOCHAJU'+index+' ,';
}
if (attrArr[9] == 1) {
col+="{field:'LEIJITONGBI"+index+"',title:'累计同比',width:60,align:'right',formatter:function(val,rec){return formatNuber(val)}},";
caseSql+='sum(case when t3.timeCd='+rowsed[i].TIMECD+' then t3.LEIJITONGBI else 0 end) LEIJITONGBI'+index+' ,';
}
if (attrArr[10] == 1) {
col+="{field:'LEIJIZHANBI"+index+"',title:'累计占比',width:60,align:'right',formatter:function(val,rec){return formatNuber(val)}},";
caseSql+='sum(case when t3.timeCd='+rowsed[i].TIMECD+' then t3.LEIJIZHANBI else 0 end) LEIJIZHANBI'+index+' ,';
}
if (attrArr[11] == 1) {
col+="{field:'LEIJILADONGLV"+index+"',title:'累计拉动率',width:60,align:'right',formatter:function(val,rec){return formatNuber(val)}},";
caseSql+='sum(case when t3.timeCd='+rowsed[i].TIMECD+' then t3.LEIJILADONGLV else 0 end) LEIJILADONGLV'+index+' ,';
}
}

caseSql=caseSql.substring(0,caseSql.length-1);
col=col.substring(0,col.length-1);
col+="]]";
//alert(col);
var fieldArr = setDataFiledSql(attrArr);
var selField = fieldArr[0];
var caseField2 = fieldArr[1];

    var month = $('#month').val();
    var monthSection = $('#monthSection').val();
    if (monthSection == "" || monthSection == null) {
monthSection = 2;
}
    var areaId = $('#area').val();
    if (areaId == null || areaId == '') {
    areaId = userAreaId;
    }
    var dimensionId = $('#dimension').val();
    if (dimensionId == null || dimensionId == '') {
    dimensionId = allDimensionId;
    }
    var dimensionValueId = $('#dimensionValue').val();
    if (dimensionValueId == null || dimensionValueId == '') {
    dimensionValueId = allDimensionValueId;
    }
    var whereArea = "";
    if (areaId != '1') {//选的地区如果是地市,那么sql加地市条件
    whereArea = " and t.std_area_id="+areaId;
    }
$('#dataTable').datagrid({
title:'数据区',
loadMsg:"数据加载中,请稍等!..",
width:newWih,
//height:600,
nowrap:false,
striped:true,
collapsible:true,
url:'/com.linkage.bi3.operateMoniter.module.KPIQueryModule.gotoJson(kpi_query,getMeasureAllData).db(tdssyn).invoke?',
queryParams:{"caseField":caseSql,"selField":selField,"caseField2":caseField2,"measureCd":measureCd,"month":removeYearMonth(month),"whereArea":whereArea,"dimensionId":dimensionId,"dimensionValueId":dimensionValueId,"allDimensionId":allDimensionId,"allDimensionValueId":allDimensionValueId,"monthSection":monthSection},
sortName:'AREAID',
remoteSort: false,

columns:eval(col),
onLoadSuccess:function (){
}
});
}
分享到:
评论

相关推荐

    jquery + ibatis

    在实际开发中,jQuery与iBatis的结合主要用于实现前后端交互,以下是一些常见应用场景: 1. **Ajax请求**:使用jQuery的Ajax功能发送请求到后端,iBatis处理SQL并返回数据。例如,通过`$.getJSON()`或`$.ajax()`...

    jQuery and ibatis

    当jQuery与iBatis结合使用时,前端可以通过Ajax调用后台的iBatis接口,实现动态加载和更新数据。例如,前端使用jQuery发起一个Ajax请求: ```javascript $.ajax({ url: '/getUser', type: 'GET', data: { id: 1 ...

    Ibatis复杂查询语句.doc

    在Ibatis中,复杂查询通常涉及到多个表的联接、条件动态拼接、子查询以及各种数据类型的处理。文档"Ibatis复杂查询语句.doc"所展示的查询语句就是一个很好的例子,展示了Ibatis如何处理复杂的数据库操作。接下来,...

    jxl结合IBATIS导出EXCEL

    jxl结合IBATIS,导出EXCEL。读取EXCEL模板,把数据写到新的EXCEL中。sql语句中要起别名,别名第一位为字母,第二位包括第二位要是整数数字,这个数字决定插入到excel表格中的位置,决定插入的是那一列。EXCEL模板中...

    IBatis结合Struts开发初学文档及实例

    此外,IBatis支持动态SQL,可以灵活地根据条件构造不同的查询。 **Struts框架** Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架。它简化了开发过程,通过控制器组件管理请求,并将业务逻辑...

    四个struts1(2)+spring+ibatis+jquery整合实例

    Struts1(2)+Spring+Ibatis+jQuery是一个经典的Java Web开发框架组合,它们各自在Web应用的不同层面上发挥着关键作用。这个整合实例旨在展示如何将这四个技术有效地结合在一起,创建一个高效、可维护的Web应用程序...

    仓储管理系统(struts2+ibatis+jsp+jquery)

    DWZ是一个基于jQuery的前端UI框架,它提供了丰富的组件和布局,如表格、表单、对话框、按钮等,方便快速构建美观且响应式的Web应用界面。在仓储管理系统中,DWZ可能被用来设计用户界面,提供统一的样式和交互体验。 ...

    jquery中文api,iBatis_API

    **jQuery中文API** jQuery是一个广泛使用的JavaScript库,它简化了HTML文档遍历、事件处理、动画制作和...在实际开发中,结合jQuery和iBatis,可以实现动态前端与高效后端的完美配合,提高Web应用的性能和用户体验。

    Struts1.2+Ibatis+JQuery案例

    在这个案例中,开发者宋海康提供了如何将这三者结合使用的实战示例,特别强调了Ajax通过JQuery与Struts1.2框架的整合。 首先,让我们详细了解这三个技术: 1. **Struts1.2**:Apache Struts1.2是基于MVC(模型-...

    Spring+DWR+ibatis+jQuery+easyUI的框架例子

    Spring+DWR+ibatis+jQuery+easyUI的框架例子. 完全开放源代码,免费学习与使用。 可以完成基本的后台主界面,报表查询,数据查询,增加,修改等功能。 如果你要做一些报表,后台功能利用这个a框架就可以很方便实现。

    ibatis资料ibatis资料

    5. **结果映射**: iBATIS可以自动将数据库查询的结果映射到Java对象,简化了数据访问的复杂性。 **文件内容可能涉及的知识点** 根据提供的压缩包文件名,我们可以推测这些资料可能包括: 1. **《iBATIS in Action...

    struts2+ibatis+Spring+Json+jquery

    而iBatis作为数据访问层,允许开发者直接编写SQL,避免了ORM(对象关系映射)的复杂性,同时也保持了数据库操作的高效性。 jQuery是一个流行的JavaScript库,用于简化DOM操作、事件处理、AJAX交互等前端任务。在这...

    ibatis总结 ibatis ibatis ibatis ibatis

    在SQL映射文件中,可以使用动态SQL来处理复杂的查询条件,如`&lt;if&gt;`、`&lt;choose&gt;`、`&lt;when&gt;`、`&lt;otherwise&gt;`等标签。 2. 数据库代码规范: - 在编写SQL时,应避免使用全模糊匹配`LIKE '%text%'`,而应尽可能使用带有...

    spring3.0 + ibatis+jquery+注解建立dao、service类

    在Spring 3.0中,可以使用MyBatis-Spring集成库来无缝地将iBatis与Spring结合,使得事务管理和DAO对象的创建变得简单。 **注解** 在本项目中,注解将被用来声明和配置DAO和服务类。例如,`@Repository`用于标记DAO...

    ibatis demo,ibatis例子,ibatis示例

    Ibatis提供了多种方式来实现映射,如自动类型匹配、自定义类型处理器、复杂关联映射等。 7. **缓存机制**:Ibatis内置了本地缓存和二级缓存,可以提高数据读取速度。本地缓存作用于单个SqlSession,而二级缓存则...

    jquery AJAX+webwork+ibatis无刷新日程提醒

    "jquery AJAX+webwork+ibatis无刷新日程提醒"就是一个典型的利用这些技术实现的Web应用功能。下面我们将深入探讨这个话题。 首先,jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画制作以及...

    Ibatis入门例子,Ibatis教程

    Ibatis,全称为MyBatis,是一个优秀的Java持久层...在实际项目中,结合Spring框架使用Ibatis,可以构建出更加健壮、高效的后端系统。因此,无论你是初学者还是有经验的开发者,掌握Ibatis都是提升自己技能的好选择。

    源码分享-ibatis+dwr+jQuery

    【标题】"源码分享-ibatis+dwr+jQuery"是一个关于使用这三种技术构建的简单商城系统的源码集合。Ibatis、Direct Web Remoting (DWR) 和 jQuery 是Web开发中的关键组件,它们共同作用于提升应用程序的性能和用户体验...

    iBATIS 级联iBATIS 级联

    iBATIS 级联iBATIS 级联iBATIS 级联

    Ibatis 入门经典 实例

    1. Mybatis-Plus:在 Ibatis 基础上提供了更多的扩展功能,如 CRUD 操作、条件构造器等。 2. Mybatis Generator:自动化代码生成工具,自动生成 Entity、Mapper 和 XML 文件,提高开发效率。 通过以上内容,你将对 ...

Global site tag (gtag.js) - Google Analytics