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. 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格式如下

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加载数据

时间: 2024-08-06 11:43:16

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

jquery easyui datagrid 保存/加载自定义配置每列属性

直接附上源代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Format DataGrid Columns - jQuery EasyUI Demo</title> <link rel="stylesheet" type="text/css" href="css/material/ea

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

首先上javascript的代码 <script type="text/javascript"> $(function () { LoadGrid(); }) //加载表格!!! function LoadGrid() { $('#roleGrid').datagrid({ width: 900, striped: true, //交替条纹 fitColumns: true, //防止水平滚动 fit: true,//自动补全 iconCls: "icon-sav

easyui datagrid 动态加载数据 渲染问题

$('#dg').datagrid({ url:'datagrid_data.json', columns:[[ {field:'code',title:'Code',width:100}, {field:'name',title:'Name',width:100}, {field:'price',title:'Price',width:100,align:'right'} ]] , //数据加载成功以后渲染 onLoadSuccess: function() { $.parser.parse(

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

$.extend($.fn.datagrid.methods,{ columnMoving: function(jq){ return jq.each(function(){ var target = this; var cells = $(this).datagrid('getPanel').find('div.datagrid-header td[field]'); cells.draggable({ revert:true, cursor:'pointer', edge:5, proxy:

【datagrid】动态加载列

之前我们的项目在前台显示只需要把数据从数据库读出来进行显示就可以,datagrid的表头字段都是写死的,把数据往表里一扔,就基本没什么事儿了,结果客户前几天要求,其中一个字段不能是死的,应该是有多少项显示多少项,比如说,原来只需要显示:其他项总分,现在需要显示的则是:xx加分,xx加分,xx减分,xx加分....字段不固定,有多少项也不确定,需要从数据库中查到相应的字段来进行显示. 不能要求客户来适应咱们的系统啊,而应该全心全意为客户着想,所以,开始改.原来的情况是,所有的字段都是固定的,而且要

【EasyUi DataGrid】动态加载列

动态加载列可以说是一个从无到有的过程,如果只是网页上的DataGrid实现那就太无味了,有趣的在这里,这个页面上连带着一大堆的数据库表的查询修改,尤其是做着做着发现数据表设计有缺陷,需要的数据竟然只有出口没有入口,想想也是醉了,对业务不熟悉真心的杀不起啊.这个其实蛮好玩的,就像玩捉迷藏藏得那个人叫做nothing,再后来我又遇到了Multiple-births(多胞胎),一个页面上涉及到了六七张数据库表,里边的字段名虽然不一样,可它就是达到了百分之七八十的相似度,多亏咱是上过学的,欺负不了我读书

03 jquery easyui 之 easyLoader 加载器

EasyLoader 是可以加载CSS样式.脚本.动态加载easyui组件.需要使用到easyloader.js,就不使用jquery.easyui.min.js 加载 EasyUI 模块 easyloader.base = '../'; // 设置 easyui 的基本目录 easyloader.load('messager', function(){ // 加载指定的模块         $.messager.alert('Title', 'load ok'); }); 通过相对 url 加

【Jquery mobile】动态加载ListView 转

[Jquery mobile]动态加载ListView 分类: Jquery Mobile2011-12-01 09:04 13984人阅读 评论(1) 收藏 举报 jquerylistviewmobilestylesheetjavascriptlist 动态增加列表项是一个基本的功能,今天测试了一下.先贴下效果图: 点击“更多...”,就会增加列表项. 代码如下: [html] view plaincopy <!DOCTYPE html> <html> <head>

jquery easyui datagrid动态改变title的值

title:'<input type="text" id="txtTitle1" style="background:none;border:none;"/>', onLoadSuccess:function(data) { $("#txtTitle1").val("所有教师 人数:"+$("#IndeterminateMembers").datagrid("get