/**
* 获得表格的head和val
* @param grid
* @returns {___anonymous51675_51790}
*/
function getGridHeadAndValInfo(grid) {
var headInfo = "";
var valInfo = "";
var gridOptions = grid.datagrid("options");
//活动列标题有几行(活动列标题和冻结列标题行数一致)
var rowNum = gridOptions.columns.length;
var fColRowNum = gridOptions.frozenColumns.length;
var fCol_index = -1;
var fCol_max_index = 0;//记录冻结列每行共有多少列
/*获取冻结的列*/
if (fColRowNum > 0 && fColRowNum == rowNum) {
var arr_frozenColumn = gridOptions.frozenColumns;
for (var i = 0; i < rowNum; i++) {
var fCol_num = 0;
var ele_frozenColumn = arr_frozenColumn[i];
var fColColNum = ele_frozenColumn.length;
for (var j = 0; j < fColColNum; j++) {
var fColumnOption = grid.datagrid("getColumnOption", ele_frozenColumn[j].field);
//不输出的列不导出
if (!isEmpty(fColumnOption.output) && !fColumnOption.output) {
continue;
}
//隐藏的列不导出
if (!isEmpty(fColumnOption.hidden) && fColumnOption.hidden) {
continue;
}
//子表扩展列不输出
if ("_expander" == fColumnOption.field){
continue;
}
//拼接行起止数
var start_row_i, end_row_i, start_cell_i, end_cell_i;
if (isEmpty(ele_frozenColumn[j].rowspan)) {//单行
start_row_i = i;
end_row_i = i;
//记录非第一行且有合并列行的开始列下标
if (undefined != ele_frozenColumn[j].colspan && fCol_index == -1) {
fCol_index = fCol_num;
}
} else {//多行
start_row_i = i;
end_row_i = i + ele_frozenColumn[j].rowspan - 1;
}
//拼接列起止数
if (fColColNum < fCol_max_index) { //第二行起,列的起始值可能不为0
if (isEmpty(ele_frozenColumn[j].colspan)) {//单列
start_cell_i = fCol_index + fCol_num;
end_cell_i = fCol_index + fCol_num;
fCol_num++;
} else {//多列
start_cell_i = fCol_index + fCol_num;
end_cell_i = fCol_index + fCol_num + ele_frozenColumn[j].colspan - 1;
fCol_num += ele_frozenColumn[j].colspan;
}
} else {
if (isEmpty(ele_frozenColumn[j].colspan)) {//单列
start_cell_i = fCol_num;
end_cell_i = fCol_num;
fCol_num++;
} else {//多列
start_cell_i = fCol_num;
end_cell_i = fCol_num + ele_frozenColumn[j].colspan - 1;
fCol_num += ele_frozenColumn[j].colspan;
}
}
//加入属性列,要导出的值列
if(!isEmpty(fColumnOption.field)){
valInfo += ";" + fColumnOption.field;
}
headInfo += ";" + fColumnOption.title.replace(/<.*?>/ig, "") + "," + start_row_i + "," + start_cell_i + "," + end_row_i + "," + end_cell_i;
}
if (i == 0) {
//记录冻结列的最后列下标,所有冻结行的最后列数是一致的,故取第一行的列数即可
fCol_max_index = fCol_num;
}
}
}
/*获取活动列*/
var arr_column = gridOptions.columns;
var col_max_index = 0;//每行有多少列
var col_index = -1;
for(var i = 0; i < rowNum; i++){
var column_num = fCol_max_index;//活动列的起始列
var ele_column = arr_column[i];
var colColNum = ele_column.length;
for (var j = 0; j < colColNum; j++) {
var columnOption = grid.datagrid("getColumnOption", ele_column[j].field);
//不输出的列不导出
if(!isEmpty(columnOption.output) && !columnOption.output){
continue;
}
//隐藏的列不导出
if(!isEmpty(columnOption.hidden) && columnOption.hidden){
continue;
}
//子表扩展列不输出
if ("_expander" == columnOption.field){
continue;
}
var start_row_i, end_row_i, start_cell_i, end_cell_i;
//拼接行起止数
if(isEmpty(ele_column[j].rowspan)){//单行
start_row_i = i;
end_row_i = i;
//记录非第一行且有合并列行的开始列下标
if(undefined != ele_column[j].colspan && col_index == -1){
col_index = column_num - fCol_max_index;
}
}else {//多行
start_row_i = i;
end_row_i = i + ele_column[j].rowspan - 1;
}
//拼接列起止数
if(colColNum < col_max_index){//说明起始列不是从头开始
if(isEmpty(ele_column[j].colspan)){
start_cell_i = column_num + col_index;
end_cell_i = column_num + col_index;
column_num ++;
}else {
start_cell_i = column_num + col_index;
end_cell_i = column_num + col_index + ele_column[j].colspan - 1;
column_num += ele_column[j].colspan;
}
}else {//说明起始列从头开始,并且不会有合并列
if(isEmpty(ele_column[j].colspan)){
start_cell_i = column_num;
end_cell_i = column_num;
column_num ++;
}else {
start_cell_i = column_num;
end_cell_i = column_num + ele_column[j].colspan - 1;
column_num += ele_column[j].colspan;
}
}
//加入属性列,要导出的值列
if(!isEmpty(columnOption.field)){
valInfo += ";" + columnOption.field;
}
headInfo += ";" + columnOption.title.replace(/<.*?>/ig, "") + "," + start_row_i + "," + start_cell_i + "," + end_row_i + "," + end_cell_i;
}
if(i == 0){//记录活动列的总列数
col_max_index = column_num - fCol_max_index;
}
}
return {
headInfo: headInfo.substring(1, headInfo.length),
valInfo: valInfo.substring(1, valInfo.length)
};
}
/**
* 判断参数是否为空
* @param val 要判断的参数
* @returns 为空为true,不为空为false
*/
function isEmpty(val){
if(typeof val == "undefined"){
return true;
}
if(typeof val== "string" && val.constructor == String){
if("" == val){
return true;
}else{
return false;
}
}
if(isArray(val)){
if(val.length <= 0){
return true
}
}
if(null == val){
return true;
}
return false;
}
/**
* 判断参数是否为数组
* @param obj
*/
function isArray(obj){
return Object.prototype.toString.call(obj)=='[object Array]';
}
相关推荐
这个“DataGrid表头合并和单元格内容合并-升级版”主题主要聚焦于如何在DataGrid中实现复杂的表头和单元格合并功能,以适应多层结构的数据展示需求。 首先,我们要理解在DataGrid中进行表头合并的意义。通常,当...
UI设计在一个系统中的重要性是不容忽视的,我们开发人员要做到:让用户去控制...给你的Easyui-DataGrid 表头添加一点料吧 Easyui-Datagrid—表头灵活显示http://blog.csdn.net/u010293698/article/details/47956865
文件主要是关于easyui的动态表头,代码主要是js部分,
http://blog.csdn.net/tianxiawudi0720/article/details/47401399
在这个"EasyUI DataGrid 过滤用法实例"中,我们将深入探讨如何利用 EasyUI 的 DataGrid 组件实现数据过滤功能,帮助用户更高效地查找和管理表格中的信息。 首先,`datagrid-filter.js` 文件很可能包含了实现过滤...
综合以上,这个主题涵盖了解决在使用jQuery EasyUI开发网页应用时,如何创建一个带有固定表头的datagrid,实现弹出框展示详细信息,以及如何利用AJAX技术动态刷新数据。理解并掌握这些知识点对于构建高效、用户体验...
### EasyUI指定列-合并相同数据行 #### 易理解释与应用场景 在日常的数据处理过程中,经常会遇到需要对表格中的重复数据进行整理的情况。EasyUI作为一种轻量级的用户界面库,提供了丰富的功能来帮助开发者高效地...
在处理大数据集时,为了提供更好的用户体验,常常需要实现固定表头的功能,使得用户在滚动浏览内容时,表头始终保持可见,以便于跟踪列对应的数据。本文将深入探讨“固定表头的DataGrid”这一主题,以及如何实现这一...
// 查询数据库获取问题类型和派单方式的相关信息 List<String> queTypeColumns = reportService.fetchQueTypeColumns(); List<String> sendWayColumns = reportService.fetchSendWayColumns(); Map, Object> ...
在实际应用中,我们常常会遇到一个问题:如何确保`Datagrid`中的表头和列内容正确对齐。标题"datagrid 4种解决table对齐"和描述"datagrid 4种解决方案 表头与列对齐"正是针对这一问题提出的不同解决策略。下面我们将...
datagrid添加tooltip及超出宽度添加省略号
- DataGrid的配置包括`url`(数据源)、`fitColumns`(是否自适应列宽)、`striped`(是否显示斑马线)、`loadMsg`(加载提示信息)等。 - `frozenColumns`和`columns`定义了DataGrid的列,其中`editor`字段指定了...
easyUI中datagrid鼠标悬浮显示图片,博客地址:https://blog.csdn.net/lwf3115841/article/details/119531658?spm=1001.2014.3001.5501
easyUI datagrid合并单元格的两种方法 都实现了按照子对象的属性合并单元格的需求 调用方式也很简单调用方式: $(tableID).datagrid("autoUnrelatedMergeCells", ["role.name", "num"]);
EasyUI文本框失去焦点事件和获取文本框内容的实现 EasyUI文本框是一种常用的UI组件,它提供了许多实用的功能,如文本框失去焦点事件和获取文本框内容等。下面我们将详细介绍EasyUI文本框失去焦点事件和获取文本框...
正确的做法是调用EasyUI提供的`datebox('getValue')`方法来获取日期值,这样才能确保无论用户何时更改选择,都能正确地在JavaScript中获取到最新的日期值。这个知识点对于前端开发人员来说非常重要,能够帮助他们更...
EasyUI Tab是一个基于jQuery和EasyUI框架的优秀Tab选项卡插件,它为网页应用程序提供了简单、高效且灵活的选项卡管理功能。EasyUI是一个轻量级的前端开发框架,集合了众多实用的组件,如表格、对话框、菜单、树形...
四、支持模拟行合并,即对象中存在集合成员; 五、支持自定义转换器(IValueConverter); 六、支持对象集合(ICollection)和支持动态字典集合(ICollection, object>>)的绑定 ; 七、对象集合使用 ...
标题中的“easyui合并相同行”指的是在使用EasyUI框架进行前端开发时,处理数据表格中存在相同行的情况。EasyUI是一个基于jQuery的轻量级前端框架,它提供了丰富的组件和样式,帮助开发者快速构建用户界面。在数据...
同时,系统可能还实现了数据加密,保护敏感信息不被未授权的用户获取。 【异常处理与日志记录】 为了确保系统的稳定运行,开发者通常会添加异常处理代码,捕获并处理可能出现的错误。同时,系统也会记录操作日志,...