`

【转】easyui datagrid 动态生成列

 
阅读更多
easyui datagrid 定义列的方式通常是:

[javascript] view plaincopy
$('#grid').datagrid({columns:[[ 
    {field:'f1',title:'字段1',width:160}, 
    {field:'f2',title:'字段2',width:160} 
]]});    

但在实际项目中,我们会经常需要datagrid能动态生成列。

在网上搜了一篇文章:再次谈谈easyui datagrid 的数据加载

很佩服这个作者,他居然能在easyui那一堆满是数字和字母组合的变量的被混淆的源码中,找到自己想要扩展的功能。。。强!

但是我不喜欢这种方式。毕竟修改源码有很多副作用,还是喜欢原生态。

动态生成列,这个很常见的需求,easyui不太可能不支持。

只是官方文档没有提到而已,可能作者是想靠这些高级功能赚咨询费。。。


说了很多废话,现在贴出我费了不少周折搞定的方法:



var options={}; 
$(function(){ 
    var myNj = 9; 
    //初始化 
    $("#disgrid").datagrid({ 
        type: 'POST', 
        nowrap: false, 
        striped: true, 
        fit:true, 
        width:1024, 
        height:500, 
        url:'', 
        pageSize:30, 
        remoteSort: false, 
        pagination:true, 
        rownumbers:true, 
        singleSelect:true, 
        queryParams:{ 
            nj:myNj, 
            unitType:1 
        } 
    });  
     
    fetchData(myNj); 
}); 
 
function fetchData(nj) { 
    var s = ""; 
    s = "[["; 
    s = s + "{field:'unitname',title:'单元',width:160},{field:'practicetime',title:'测试时间',width:160},{field:'userid',title:'userid',width:120,hidden:'true'},{field:'serial',title:'serial',width:120,hidden:'true'},{field:'unitid',title:'unitid',width:100,hidden:'true'},"; 
     
    //lu todo 列的定义可从服务器获得 
    if (nj==9) { 
        s = s + "{field:'aipanel_text_exam',title:'短文朗读',width:80},{field:'aipanel_scene_exam',title:'情景对话',width:80},{field:'aipanel_oral_exam',title:'简短说话',width:80}"; 
 
        //lu 加一个计算列 
        s = s + ",{field:'tatal_score',title:'总分',width:60,formatter:function(value,rec){return paraseIntValue(rec.aipanel_text_exam)+paraseIntValue(rec.aipanel_scene_exam)+paraseIntValue(rec.aipanel_oral_exam);}}"; 
    }else if (nj==7||nj==8){ 
      //.... 
  } 
    s = s + "]]"; 
    options={}; 
    options.url = '/app/search.do'; 
    options.queryParams = { 
        nj:nj, 
        unitType:1 
    }; 
    options.columns = eval(s); 
    //lu 增加一列 
    options.columns[0].push( 
        { 
            field:'desc',title:'查看详情',width:60, 
            formatter:function(value,rec){ 
                return "<a href=\"javascript:showDescInfo(\'"+rec.serial+"\',\'"+rec.scene_score+"\',\'"+rec.total_score+"\');\">详情</a>"; 
            } 
        }    
    ); 
     
    $('#disgrid').datagrid(options); 
    $('#disgrid').datagrid('reload');    
     
分享到:
评论

相关推荐

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

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

    easyui datagrid 表格 打印

    在IT领域,EasyUI Datagrid是一款基于jQuery的前端数据展示组件,它提供了丰富的表格功能,如数据分页、排序、筛选等。当我们需要将Datagrid中的数据进行打印时,可能会遇到一些挑战,因为通常默认的浏览器打印功能...

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

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

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

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

    easyui datagrid 导出到excel

    在IT领域,EasyUI Datagrid是一款基于jQuery的前端数据展示组件,它提供了丰富的表格功能,如排序、分页、过滤等。"EasyUI Datagrid 导出到Excel"这一主题涉及的是如何将EasyUI Datagrid中的数据显示在Excel表格中,...

    easyui datagrid单元格tip实现

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

    easyui使用datagrid定制生成一个table

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

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

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

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

    可以使用JavaScript触发异步请求,将当前Datagrid的数据显示范围发送到服务器,然后服务器端生成Excel文件并返回给客户端。 5. **搜索**: Datagrid内置了搜索功能,可以通过配置`fitlers`属性为每列添加过滤条件...

    easyui的datagrid数据excel导出

    ### easyui的datagrid数据excel导出 #### 一、知识点概览 1. **EasyUI框架简介** 2. **DataGrid组件概述** 3. **DataGrid的列配置** 4. **将DataGrid转换为表格(Table)结构** 5. **导出至Excel的具体实现** 6. *...

    EasyUI 1.3.1动态表格列示例

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

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

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

    easyui datagrid扩展之拾色器

    1. **定义列模板**:在DataGrid的columns配置中,为需要添加拾色器的列设置一个特殊的模板。模板中可以包含一个ComboBox,用于显示颜色选择的下拉框。 2. **创建ComboBox**:ComboBox是EasyUI中的一个下拉选择框...

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

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

    .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实现的数据列表

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

    EasyUI的DataGrid绑定Json数据源的示例代码

    5. 该示例代码还涉及了如何通过JavaScript循环将Json数据集中的数据绑定到DataGrid中,即通过循环将数据集中的每一行数据绑定到表格的对应列上。 文章中还提到了EasyUI的DataGrid组件的两种绑定数据的方法。第一种...

    easyui 各种导出

    在EasyUI中,数据导出通常与表格组件(datagrid)紧密关联,因为表格通常承载着大量的数据。以下是一些关于EasyUI导出功能的关键知识点: 1. **导出类型**:EasyUI支持多种导出格式,如CSV(逗号分隔值)、Excel、...

Global site tag (gtag.js) - Google Analytics