`
xmdxzyf
  • 浏览: 24732 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

easyui datagrid 动态生成列的实现

阅读更多

功能:

类似oracle的web版本的sql查询。

 

实现方式:

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

 

前台主要js为:

function sqlSearch(){
	var sqlStatement = $.trim($("#sqlStatementId").val());
	if(sqlStatement == null || sqlStatement == ""){
		return false;
	}
	
	var type = "POST";
	var url = "sqlExecCtrl.action?cmd=getColumnNameList";
	var param = "sqlStatement=" + $("#sqlStatementId").val();
		
	ajaxExtend(type,url,param,function(data){
		var options = $("#sqlResultDisplay").datagrid("options");					//取出当前datagrid的配置   
		options.columns = eval(data.columns);												//添加服务器端返回的columns配置信息   
		options.queryParams = getQueryParams("sqlConditionId");				//添加查询参数
		$("#sqlResultDisplay").datagrid(options) ;										
		$("#sqlResultDisplay").datagrid("load") ;											//获取当前页信息
	});
}

/**
 * 根据指定条件请求系统资源
 *1、 异步
 *2、返回格式为json
 *
 * @param type			//请求方式
 * @param url				//请求url
 * @param param		//请求参数
 * @param callback		//回调函数
 */
function ajaxExtend(type,url,param,callback){
	ajaxExtendBase(type,url,param,true,callback);
}

/**
 * ajax请求基础方法
 * @param type
 * @param url
 * @param param
 * @param async
 * @param callback
 */
function ajaxExtendBase(type,url,param,async,callback){
	$.ajax({
		   type: type,
		   url: url,
		   data:param,
		   async : async,
		   dataType:"json",
		   success:function(result){
			   if(result.success){											//只有sql正确能获取相关列名后才再请求列表资源
					callback(result.data);									//获取当前页信息
			   }
			   else{
				   dealWithException(result.exception);
			   }
		   }
	});
}


/**
 * 将指定form参数转换为json对象
 */
function getQueryParams(conditionFormId){
 var searchCondition = getJqueryObjById(conditionFormId).serialize();
 var obj = {};
    var pairs = searchCondition.split('&');
    var name,value;
    
    $.each(pairs, function(i,pair) {
     pair = pair.split('=');
     name = decodeURIComponent(pair[0]);
     value = decodeURIComponent(pair[1]);
     
     obj[name] =  !obj[name] ? value :[].concat(obj[name]).concat(value);              //若有多个同名称的参数,则拼接
    });
    
    return obj;
}


 

后台返回的json格式如下

{"total":3,
"columns":[[{"field":"ROLE_ID","title":"ROLE_ID","width":100,"resizable":true},
	{"field":"NAME","title":"NAME","width":100,"resizable":true},
	{"field":"CREATE_DATE","title":"CREATE_DATE","width":100,"resizable":true},
	{"field":"DESCRIPTION","title":"DESCRIPTION","width":100,"resizable":true}]],
"rows":[{"NAME":"普通人员","DESCRIPTION":"只具有查看权限","CREATE_DATE":"2012-09-21 16:31:53.0","ROLE_ID":"7"},
	{"NAME":"调度人员","DESCRIPTION":"开放全部功能,但无系统管理相关权限","CREATE_DATE":"2012-09-21 16:32:24.0","ROLE_ID":"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加载数据

 

 

效果图:

 

见附件

  • 大小: 14.3 KB
分享到:
评论

相关推荐

    easyUI页面datagrid动态列和form字段动态添加

    easyUI页面datagrid动态列和form字段动态添加;项目开发时用到的,废了不少事,大概总了一下,现在发出来共享给想我一样的要用到的菜鸟们,谢谢

    easyui的datagrid生成合并行,合计计算价格

    在描述中提到的"easyui的datagrid生成合并行,合计计算价格",指的是如何使用EasyUI的DataGrid组件来实现表格数据的行合并以及总价的计算功能。以下是对这个知识点的详细解释: 1. EasyUI DataGrid组件: EasyUI的...

    datagrid 多表头及动态生成的实现

    本文的目标是通过一个具体的案例来展示如何使用JQuery EasyUI的datagrid组件来实现多表头和根据数据库动态生成列的需求。 #### 解决方案 ##### 1. 后端逻辑准备 为了实现前端表格能够根据数据库内容动态变化,...

    easyui datagrid 表格 打印

    1. **扩展Datagrid功能**:可以通过扩展EasyUI Datagrid的默认功能来实现打印,这可能涉及到自定义事件监听器,当用户触发打印操作时,将当前视图的数据转换为适合打印的格式。 2. **CSS调整**:由于打印时浏览器...

    easyui datagrid单元格tip实现

    在Easyui的1.3.3版本中,作者新增了tooltip组件,尽管样式看起来也...之前我写过一篇《扩展:datagrid鼠标经过提示单元格内容》那就是用纯编码生成的tip,更为丑陋,有了Easyui 1.3.3的tooltip,我们实现起来就很容易了

    easyui datagrid 导出到excel

    在IT领域,EasyUI Datagrid是一款基于jQuery的...通过以上步骤,用户就能成功地将EasyUI Datagrid中的数据导出到Excel文件中,实现数据的便捷管理和分析。在实际应用中,可以根据项目需求对这个过程进行优化和扩展。

    easyui使用datagrid定制生成一个table

    **1.1 DataGrid 自动生成列与用户自定义列** EasyUI 的 DataGrid 控件支持两种方式的数据绑定:自动列生成和用户自定义列。 - **自动列生成**:当 `AutoGenerateColumns` 属性被设置为 `true` 时,DataGrid 会根据...

    easyui datagrid支持设置非冻结的序号列

    1. **分析源码**:首先,我们需要查看EasyUI Datagrid的源代码,找到与序号列生成和定位相关的部分。这部分代码可能涉及DOM操作和事件绑定。 2. **创建新功能**:然后,我们需要添加新的函数或方法,用于创建可滚动...

    easyui Datagrid 数据列表比较上一个上传的增加了超链接并传值、条件清空、日期控件清空和数据修改功能

    EasyUI Datagrid支持数据导出到Excel,这通常通过后台处理实现,将Datagrid中的数据转换成Excel格式并提供下载。可以使用JavaScript触发异步请求,将当前Datagrid的数据显示范围发送到服务器,然后服务器端生成...

    EasyUI 1.3.1动态表格列示例

    4. **初始化表格**:使用EasyUI的`datagrid`方法初始化表格,并传入动态生成的列配置。 ```javascript $('#datagrid').datagrid({ columns: [columns], data: dataSource.data // 数据源中的数据行 }); ``` 5. *...

    easyui的datagrid数据excel导出

    DataGrid 中的列配置是通过 `frozenColumns` 和 `columns` 两个属性来实现的: - **frozenColumns**:指定哪些列是固定的,即在滚动时这些列始终显示在左侧。 - **columns**:指定 DataGrid 的所有列,包括固定列和...

    使用easyui表格数据动态生成饼图

    "使用easyui表格数据动态生成饼图"的主题涉及到前端开发中的几个关键点:EasyUI框架、数据处理以及JavaScript图表库ECharts。下面我们将深入探讨这些知识点。 首先,EasyUI是一个基于jQuery的UI库,它提供了一系列...

    DataGrid表头合并和单元格内容合并-升级版

    可以使用AutoGenerateColumns属性自动生成列,或者手动定义每列的Width属性。 3. **编程实现合并**:在后台代码中,需要对DataGrid的ItemsSource进行处理,识别出哪些行或列需要合并,并设置相应的HeaderSpan属性。...

    easyui datagrid扩展之拾色器

    在本文中,我们将深入探讨如何在EasyUI的DataGrid中扩展功能,实现一个自定义的拾色器。这个拾色器是通过结合DataGrid、ComboBox以及HTML5的Canvas元素来创建的,为用户提供一个直观的颜色选择界面。 首先,我们要...

    EasyUi实现的数据列表

    1. **查询**:EasyUI的datagrid支持动态查询,用户可以通过输入关键字或选择条件来过滤数据,实时更新显示结果。 2. **分页**:为了提高用户体验和页面性能,通常会将大量数据分成多个页进行显示。EasyUI datagrid...

    .net 使用easyUI_DataGrid分页

    本教程将深入讲解如何在.NET环境中利用EasyUI的DataGrid实现分页功能,同时也会涉及列的操作。 首先,我们需要理解什么是分页。分页是当数据量过大时,为了提高用户界面的响应速度和用户体验,将数据分成若干页进行...

    easyui datagird增删改分页例子

    标题 "easyui datagird增删改分页例子" 提示我们这个压缩包包含一个使用EasyUI DataGrid实现数据操作和分页功能的示例。EasyUI是一个基于jQuery的前端框架,DataGrid是其组件之一,常用于展示表格数据并支持用户交互...

    jQuery EasyUI中DataGird动态生成列的方法

    在某些情况下,我们需要根据用户的权限或特定需求动态地调整DataGrid显示的列,这可以通过动态生成列来实现。以下是对EasyUI DataGrid动态生成列的详细说明。 首先,我们要理解DataGrid的`columns`属性。`columns`...

    easyui+数据导出为Excel

    本文将详细介绍如何在基于EasyUI的前端框架下实现数据导出为Excel的功能。 EasyUI是一个基于jQuery的轻量级前端框架,它提供了丰富的组件和样式,帮助开发者快速构建用户界面。然而,EasyUI本身并不直接支持数据...

    简介EasyUI datagrid editor combogrid搜索框的实现

    在本文中,我们将深入探讨如何在EasyUI框架中实现datagrid editor中的combogrid搜索框。EasyUI是一个基于jQuery的用户界面插件集合,它提供了丰富的组件,如datagrid、combogrid等,用于构建简洁且功能强大的Web应用...

Global site tag (gtag.js) - Google Analytics