实现方式:

首先根据输入的sql语句获得相关的列名称返回给前台,然后在datagrid中动态加载列,接着根据查询条件(包括sql语句)获取相关的记录返回给前台用于填充datagrid。从而实现类似oracle web版的sql查询。

前台主要js为:

  1. function sqlSearch(){
  2. var sqlStatement = $.trim($("#sqlStatementId").val());
  3. if(sqlStatement == null || sqlStatement == ""){
  4. return false;
  5. }
  6. var type = "POST";
  7. var url = "sqlExecCtrl.action?cmd=getColumnNameList";
  8. var param = "sqlStatement=" + $("#sqlStatementId").val();
  9. ajaxExtend(type,url,param,function(data){
  10. var options = $("#sqlResultDisplay").datagrid("options");                   //取出当前datagrid的配置
  11. options.columns = eval(data.columns);                                               //添加服务器端返回的columns配置信息
  12. options.queryParams = getQueryParams("sqlConditionId");             //添加查询参数
  13. $("#sqlResultDisplay").datagrid(options) ;
  14. $("#sqlResultDisplay").datagrid("load") ;                                           //获取当前页信息
  15. });
  16. }
  17. /**
  18. * 根据指定条件请求系统资源
  19. *1、 异步
  20. *2、返回格式为json
  21. *
  22. * @param type          //请求方式
  23. * @param url               //请求url
  24. * @param param     //请求参数
  25. * @param callback      //回调函数
  26. */
  27. function ajaxExtend(type,url,param,callback){
  28. ajaxExtendBase(type,url,param,true,callback);
  29. }
  30. /**
  31. * ajax请求基础方法
  32. * @param type
  33. * @param url
  34. * @param param
  35. * @param async
  36. * @param callback
  37. */
  38. function ajaxExtendBase(type,url,param,async,callback){
  39. $.ajax({
  40. type: type,
  41. url: url,
  42. data:param,
  43. async : async,
  44. dataType:"json",
  45. success:function(result){
  46. if(result.success){                                          //只有sql正确能获取相关列名后才再请求列表资源
  47. callback(result.data);                                  //获取当前页信息
  48. }
  49. else{
  50. dealWithException(result.exception);
  51. }
  52. }
  53. });
  54. }
  55. /**
  56. * 将指定form参数转换为json对象
  57. */
  58. function getQueryParams(conditionFormId){
  59. var searchCondition = getJqueryObjById(conditionFormId).serialize();
  60. var obj = {};
  61. var pairs = searchCondition.split('&');
  62. var name,value;
  63. $.each(pairs, function(i,pair) {
  64. pair = pair.split('=');
  65. name = decodeURIComponent(pair[0]);
  66. value = decodeURIComponent(pair[1]);
  67. obj[name] =  !obj[name] ? value :[].concat(obj[name]).concat(value);              //若有多个同名称的参数,则拼接
  68. });
  69. return obj;
  70. }

后台返回的json格式如下

  1. {"total":3,
  2. "columns":[[{"field":"ROLE_ID","title":"ROLE_ID","width":100,"resizable":true},
  3. {"field":"NAME","title":"NAME","width":100,"resizable":true},
  4. {"field":"CREATE_DATE","title":"CREATE_DATE","width":100,"resizable":true},
  5. {"field":"DESCRIPTION","title":"DESCRIPTION","width":100,"resizable":true}]],
  6. "rows":[{"NAME":"普通人员","DESCRIPTION":"只具有查看权限","CREATE_DATE":"2012-09-21 16:31:53.0","ROLE_ID":"7"},
  7. {"NAME":"调度人员","DESCRIPTION":"开放全部功能,但无系统管理相关权限","CREATE_DATE":"2012-09-21 16:32:24.0","ROLE_ID":"8"},
  8. {"NAME":"超级管理员","DESCRIPTION":"具有所有权限","CREATE_DATE":"2012-09-17 20:23:19.0","ROLE_ID":"1"}]}

其中,"columns"对应sqlSearch方法的ajaxExtend(type,url,param,function(data){})回调函数中的data,"total"和"rows"为datagrid加载数据

jquery easyui datagrid 动态 加载列的更多相关文章

  1. EasyUI datagrid动态加载json数据

    最近做一个项目,要求是两张张表可能查找出10多种不同的结果集. 如果想只用一个表格就把全部的结果不同的显示出来那么就肯定不同使用固定的字段名字,要通过动态加载后台返回来的数据把它显示出来就必须动态加载 ...

  2. jquery easyui datagrid 远程加载数据----javascript法

    jquery easyui有三种办法生成datagrid(数据网格),本篇专门讨论javascript借助jquey easy ui实现的方式 html部分 <main role="m ...

  3. easyui datagrid 动态加载数据 渲染问题,表格错位问题

    $('#dg').datagrid({ url:'datagrid_data.json', columns:[[ {field:'code',title:'Code',width:100}, {fie ...

  4. 【第一篇】说说MVC+EF easyui dataGrid 动态加载分页表格

    首先上javascript的代码 <script type="text/javascript"> $(function () { LoadGrid(); }) //加载 ...

  5. 转 -- MVC+EF easyui dataGrid 动态加载分页表格

    首先上javascript的代码 <script type="text/javascript"> $(function () { LoadGrid(); }) //加载 ...

  6. jquery easyui datagrid 远程加载数据----把主键渲染为值遇到的问题及解决方案

    起因:数据库中一些字段存的是代表具体值的数字,需要渲染为具体值 monggodb中的字典 mysql中存放的值为:expertin代表教练擅长的搏击技能 jquery easyui中的相关代码如下:用 ...

  7. EasyUI datagrid 动态加载表头和数据

    首先返回到页面的需要是JSON数据: 第一步: 遍历表头,插入到array中 for (var i = 0; i < jsonObj.title.length; i++) { //把返回的数据封 ...

  8. jquery easyui tree动态加载子节点

    1.前端tree绑定时,使用onBeforeExpand事件:当节点展开时触发加载子节点,自动会向服务端发送请求:url为绑定url,参数为当前节点id this.tree = { method: ' ...

  9. jquery easyui DataGrid 动态的改变列显示的顺序

    $.extend($.fn.datagrid.methods,{ columnMoving: function(jq){ return jq.each(function(){ var target = ...

随机推荐

  1. redis 学习札记4-sortset

    redis 学习笔记4--sortset redis学习笔记3--sortSet 终于到最后一个数据结构了,加油!! 整体结构图: http://dl.iteye.com/upload/picture ...

  2. AME_IExpense费用报表通过AME审批简单例子(案例)

    2014-05-30 Created By BaoXinjian

  3. Unix环境高级编程(十六)进程间通信

    进程间通信(IPC)是指能在两个进程间进行数据交换的机制.现代OS都对进程有保护机制,因此两个进程不能直接交换数据,必须通过一定机制来完成. IPC的机制的作用: (1)一个软件也能更容易跟第三方软件 ...

  4. Unix环境高级编程(五)进程环境

    本章主要介绍了Unix进程环境,包含main函数是如何被调用的,命令行参数如何传递,存储方式布局,分配存储空间,环境变量,进程终止方法,全局跳转longjmp和setjmp函数及进程的资源限制. ma ...

  5. Google大脑科学家贾杨清(Caffe缔造者)-微信讲座

    Google大脑科学家贾杨清(Caffe缔造者)-微信讲座 机器学习Caffe 贾扬清 caffe   一.讲座正文: 大家好!我是贾扬清178,目前在Google Brain69,今天有幸受雷鸣师兄 ...

  6. unity 查看prefab层次

    点那个箭头,可以展开:

  7. Linux 共享库(动态库)

    Linux 系统上有两类根本不同的 Linux 可执行程序.第一类是静态链接的可执行程序.静态可执行程序包含执行所需的所有函数 — 换句话说,它们是“完整的”.因为这一原因,静态可执行程序不依赖任何外 ...

  8. 【翻译自mos文章】job 不能自己主动执行--这是另外一个mos文章,本文章有13个解决方法

    job 不能自己主动执行--这是另外一个mos文章 參考原文: Jobs Not Executing Automatically (Doc ID 313102.1) 适用于: Oracle Datab ...

  9. [sql]MySQL数据备份小结

    一 MySQL备份恢复总结: 1,备份所有库 2,分库备份 3,备份某库中的某表 4,备份某库中的多个表 5,分表备份 6,只备份表结构 7,只备份数据 二 MySQL备份恢复参数总结: -A 备份所 ...

  10. zabbix监控某个普通端口

    linux下端口和服务是对应的. 先创建一个模板:configureation-->templates然后点create templates按钮: 如果没有组可以新建个组:app 查看新建的te ...