当前位置: 首页 > news >正文

jquery easyui datagrid 动态 加载列

实现方式:

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

 

前台主要js为:

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

 

后台返回的json格式如下

Java代码   收藏代码
  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加载数据

转载于:https://www.cnblogs.com/huangf714/p/5854777.html

相关文章:

  • 《深入浅出 Java Concurrency》—锁机制(八) 读写锁 (ReentrantReadWriteLock) (1)
  • Spring AOP
  • 《深入浅出 Java Concurrency》—锁机制(九) 读写锁 (ReentrantReadWriteLock) (2)
  • 《深入浅出 Java Concurrency》—锁机制(十) 锁的一些其它问题
  • Unix高级编程之文件IO
  • java集合框架学习—ArrayList的实现原理
  • 不等式证明
  • java集合框架学习—HashMap的实现原理
  • PHP 错误 系列:编码格式错误解决
  • java集合框架学习—HashSet的实现原理
  • 【腾讯优测干货分享】Android内存泄漏的简单检查与分析方法
  • java集合框架学习—LinkedHashMap的实现原理
  • C#基础-MD5验证
  • java中Hashtable与HashMap的区别
  • html5使用FileReader上传图片
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Lsb图片隐写
  • mac修复ab及siege安装
  • MYSQL 的 IF 函数
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • vue自定义指令实现v-tap插件
  • 小而合理的前端理论:rscss和rsjs
  • Linux权限管理(week1_day5)--技术流ken
  • 通过调用文摘列表API获取文摘
  • ​​​​​​​​​​​​​​Γ函数
  • #android不同版本废弃api,新api。
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (搬运以学习)flask 上下文的实现
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)Android学习系列(31)--App自动化之使用Ant编译项目多渠道打包
  • (转)memcache、redis缓存
  • **python多态
  • 、写入Shellcode到注册表上线
  • .libPaths()设置包加载目录
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • @ModelAttribute注解使用
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [DP 训练] Longest Run on a Snowboard, UVa 10285
  • [Hive] CTE 通用表达式 WITH关键字
  • [IE编程] IE 是如何决定Accept-Language 属性的
  • [JS设计模式]Prototype Pattern
  • [LeetCode] NO. 169 Majority Element
  • [Leetcode] Permutations II
  • [one_demo_17]使用传统方式实现线程间通信的例子
  • [php] 数据结构算法(PHP描述) 快速排序 quick sort
  • [poj3686]The Windy's(费用流)
  • [python]mysqlclient常用命令
  • [Python3网络爬虫开发实战] 5.3-非关系型数据库存储
  • [Windows编程] SHLWAPI 和 CRT (C Runtime) 字符串处理函数的区别
  • [创业之路-99/管理者与领导者-141] :绩效管理-1-绩效管理是一把手工程、是系统工程、是化繁为简工程