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

EasyUI给表格绑定数据是最常用的方法,小编分享一下总结出来的两种绑定表格方法,知识在于积累。

第一种:数据存放在数据集中,每一行对应多个值,利用循环把数据绑定到表格

前台代码:

<table id="dg" class="easyui-datagrid" style="width:100%;height:100%;" title="需要设置表格标题" data-options="
        rownumbers:true,
        singleSelect:true,
        @*autoRowHeight:false,*@
        pagination:true
        @*pageSize:10*@">
      <thead>
        <tr>
          <th field="colum1">列1</th>
          <th field="colum2">列2</th>
          <th field="colum3">列3</th>
          <th field="colum4">列4</th>
          <th field="colum5">列5</th>
          <th field="colum6">列6</th>
        </tr>
      </thead>
    </table>

JS代码:

(function ($) {
  function pagerFilter(data) {
    if ($.isArray(data)) { // is array
      data = {
        total: data.length,
        rows: data
      }
    }
    var target = this;
    var dg = $(target);
    var state = dg.data('datagrid');
    var opts = dg.datagrid('options');
    if (!state.allRows) {
      state.allRows = (data.rows);
    }
    if (!opts.remoteSort && opts.sortName) {
      var names = opts.sortName.split(',');
      var orders = opts.sortOrder.split(',');
      state.allRows.sort(function (r1, r2) {
        var r = 0;
        for (var i = 0; i < names.length; i++) {
          var sn = names[i];
          var so = orders[i];
          var col = $(target).datagrid('getColumnOption', sn);
          var sortFunc = col.sorter || function (a, b) {
            return a == b ? 0 : (a > b ? 1 : -1);
          };
          r = sortFunc(r1[sn], r2[sn]) * (so == 'asc' ? 1 : -1);
          if (r != 0) {
            return r;
          }
        }
        return r;
      });
    }
    var start = (opts.pageNumber - 1) * parseInt(opts.pageSize);
    var end = start + parseInt(opts.pageSize);
    data.rows = state.allRows.slice(start, end);
    return data;
  } 

  var loadDataMethod = $.fn.datagrid.methods.loadData;
  var deleteRowMethod = $.fn.datagrid.methods.deleteRow;
  $.extend($.fn.datagrid.methods, {
    clientPaging: function (jq) {
      return jq.each(function () {
        var dg = $(this);
        var state = dg.data('datagrid');
        var opts = state.options;
        opts.loadFilter = pagerFilter;
        var onBeforeLoad = opts.onBeforeLoad;
        opts.onBeforeLoad = function (param) {
          state.allRows = null;
          return onBeforeLoad.call(this, param);
        }
        var pager = dg.datagrid('getPager');
        pager.pagination({
          onSelectPage: function (pageNum, pageSize) {
            opts.pageNumber = pageNum;
            opts.pageSize = pageSize;
            pager.pagination('refresh', {
              pageNumber: pageNum,
              pageSize: pageSize
            });
            dg.datagrid('loadData', state.allRows);
          }
        });
        $(this).datagrid('loadData', state.data);
        if (opts.url) {
          $(this).datagrid('reload');
        }
      });
    },
    loadData: function (jq, data) {
      jq.each(function () {
        $(this).data('datagrid').allRows = null;
      });
      return loadDataMethod.call($.fn.datagrid.methods, jq, data);
    },
    deleteRow: function (jq, index) {
      return jq.each(function () {
        var row = $(this).datagrid('getRows')[index];
        deleteRowMethod.call($.fn.datagrid.methods, $(this), index);
        var state = $(this).data('datagrid');
        if (state.options.loadFilter == pagerFilter) {
          for (var i = 0; i < state.allRows.length; i++) {
            if (state.allRows[i] == row) {
              state.allRows.splice(i, 1);
              break;
            }
          }
          $(this).datagrid('loadData', state.allRows);
        }
      });
    },
    getAllRows: function (jq) {
      return jq.data('datagrid').allRows;
    }
  })
})(jQuery); 
  $.ajax({
    type: "get",  //AJAX提交方式
    url: "路径",
    datatype: "json",
    data: "userid=" + "id"+ "&username=" + "name",  //向后台传递参数,无需传递参数就可以删除
    success: function (data) {
      var rows = []; 

      for (var i = 0; i < data.length; i++) {   //data是返回值的集合
        rows.push({               //把data数据对应的值压到rows对应数组中
          colum1: data[i].userid,
          colum2: data[i].leve,
          colum3: data[i].Username,
          colum4: data[i].Tel,
          colum5: data[i].Mail,
          colum6: data[i].Explain
        });
      }
      $('#dg').datagrid({ data: rows }).datagrid('clientPaging');
    }, error: function () {            //执行出错时执行的方法
      $.messager.alert("操作提示", "表格失败,请联系管理员!", "warning");
    }
  });

需要绑定表格时调用AJAX方法,AJAX执行完后会自动调用显示数据方法,表格数据就显示出来了

第二种:直接在前台和JS设置好列名,自动绑定

前台代码:

<table id="dg" class="easyui-datagrid" title="需要显示表格标题 " data-options="
        rownumbers:true,
        singleSelect:true,
        autoRowHeight:false,
        pagination:true,
        ">
        <thead>
          <tr>
            <th data-options="field:'colum1',align:'center'">列名1</th>
            <th data-options="field:'colum2',align:'center'">列名2</th>
            <th data-options="field:'colum3',align:'center'">列名3</th>
            <th data-options="field:'colum4',align:'center'">列名4</th>
            <th data-options="field:'colum5',align:'center'">列名5</th>
            <th data-options="field:'colum6',align:'center'">列名6</th>
          </tr>
        </thead>
      </table>

JS代码:

 $('#dg').datagrid({
    url: '路径?Name=' + Name + "&combox=" + combox,  //设置访问后台路径和传递参数,如果没有参数可以删除
    dataType: 'json',
    width: "100%", //宽度
    striped: true, //把行条纹化(奇偶行背景色不同)
    idField: 'quesID', //标识字段
    loadMsg: '正在加载用户的信息.......', //从远程站点加载数据是,显示的提示消息
    pagination: true, //数据网格底部显示分页工具栏
    singleSelect: false, //只允许选中一行
    pageList: [10, 20, 30, 40, 50], //设置每页记录条数的列表
    pageSize: 10, //初始化页面尺寸(默认分页大小)
    pageNumber: 1, //初始化页面(默认显示第一页)
    beforePageText: '第', //页数文本框前显示的汉字
    afterPageText: '页 共 {pages} 页',
    displayMsg: '第{from}到{to}条,共{total}条',
    columns: [[ //每页具体内容
          { field: 'colum1', title: '标题1', width: "13%", align: 'center', editor: 'text' },
          { field: 'colum2', title: '标题2', width: "13%", align: 'center', editor: 'text' },
          { field: 'colum3', title: '标题3', width: "13%", align: 'center', editor: 'text' },
          { field: 'colum4', title: '标题4', width: "13%", align: 'center', editor: 'text' },
          { field: 'colum5', title: '标题5', width: "13%", align: 'center', editor: 'text' },
          { field: 'colum6', title: ' 标题6 ', width: "13%", align: 'center', editor: 'text' },
    ]], 

    onLoadSuccess: function (data) { 

      //表格加载成功后执行的代码,如果不需要可以删除
    }
  })

把JS代码放在一个function函数中就可以了,函数执行时表格就可以绑定数据了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 实现easyui的datagrid导出为excel的示例代码

    之前有介绍过如何实现easyui里datagrid内容的打印,今天给大家介绍下如何实现datagrid内容导出为excel文件.以下为代码实现: export.js function ChangeToTable(printDatagrid) { var tableString = '<table cellspacing="0" class="pb">'; var frozenColumns = printDatagrid.datagrid("o

  • EasyUI中datagrid在ie下reload失败解决方案

    问题 最近使用EasyUI开发后台系统,测试时发现个奇葩的问题,$('dg').datagrid('reload'); 重新加载表格数据时,ie下一点反应都没有.后来发现其实并不是没有反应,而是浏览器使用了缓存. 解决方案 网上网友总结出来的解决方案有以下几种: 1.在url后加时间戳,使第一次加载和reload中访问的url不一致,使系统无法使用IE缓存.通过测试发现,EasyUI请求时后面已经自带一串随机数_145232xxx,但是ie还是会使用缓存.后来我在请求的js中为url加上rand

  • jQuery EasyUI之DataGrid使用实例详解

    jQuery EasyUI是一个轻量级的Web前端开发框架,提供了很多的现成组件帮助程序员减轻前端代码开发量,之前有个项目中就用到了其中的DataGrid. jQuery EasyUI框架的官方主页,可以下载完整开发包,里面有示例代码可以参考. 运行效果图: 由于我使用的是ASP.NET webform技术,下面我就贴出主要的代码以供参考. 在页面中首先要引用相关的css以及js文件,这样才能使用该组件. css部分: <link href="../Js/jQueryEasyUI/them

  • jQuery Easyui学习之datagrid 动态添加、移除editor

    使用easyui行编辑的时候完成编辑的功能比较简单,但是如果要根据一个框的值动态改变别的值或者编辑的时候禁用某个框的时候就比较麻烦了. 比如像下面这样:添加行的时候每个值都是手动输入,修改的时候第一个值不能修改.我们来看下怎么实现这样的效果. easyui本身是不提供这么细节的功能的,需要我们自己拓展下: 在编辑的时候移除第一列的editor属性,添加的时候,添加第一列的属性. //扩展datagrid:动态添加删除editor $.extend($.fn.datagrid.methods, {

  • Jquery下EasyUI组件中的DataGrid结果集清空方法

    我们有一个模块如下图,要求选择"地区"及"代维公司"后,刷新第一个DataGrid框体 并以第一个结果集中的行为数据条件点击完成下一个框体的检索 现在我们已完成相应功能,并在选择"地区"及"代维公司"并保证这两个选项同时有值后,自动刷新第一个DataGrid(DG1)结果集 但是在DG1刷新完毕后,后面两个紧跟的DG2及DG3还是保有之前的结果 我试图更改DG2及DG3的查询条件,手动传一个空的ID值给query()方法,但是

  • jQuery easyui datagrid动态查询数据实例讲解

    该插件组小巧使用方便,以下是一个从前台提交查询条件,从MSSQL返回json数据的一个事例 HTML前端代码 复制代码 代码如下: <?php include_once("auth.php"); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link rel=&qu

  • JQueryEasyUI datagrid框架的基本使用

    今天说说这个datagrid框架的基本使用,这个框架一直以来都是大家比较头疼的框架,尤其是Json数据的拼接,后台前台都很重要,使用这个框架,最重要的是仔细:无需废话,上代码了: 复制代码 代码如下: <link href="jquery-easyui-1.3.2/themes/default/easyui.css" rel="stylesheet" type="text/css" /><!--easyui最全的样式包也可单独引

  • jQuery EasyUI datagrid实现本地分页的方法

    本文实例讲述了jQuery EasyUI datagrid实现本地分页的方法.分享给大家供大家参考.具体如下: 一般分页都是后台做,前端做无论从哪方面考虑都不合适.但是有的时候还是有这种需求. 这里重点用到了pagination的监听,以及JS数组的slice方法来完成.代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title></title&g

  • jQuery EasyUI API 中文文档 - DataGrid数据表格

    扩展自 $.fn.panel.defaults ,用 $.fn.datagrid.defaults 重写了 defaults . 依赖 panel resizable linkbutton pagination 用法 复制代码 代码如下: <table id="tt"></table> 复制代码 代码如下: $('#tt').datagrid({ url:'datagrid_data.json', columns:[[ {field:'code',title:'

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

    EasyUI给表格绑定数据是最常用的方法,小编分享一下总结出来的两种绑定表格方法,知识在于积累. 第一种:数据存放在数据集中,每一行对应多个值,利用循环把数据绑定到表格 前台代码: <table id="dg" class="easyui-datagrid" style="width:100%;height:100%;" title="需要设置表格标题" data-options=" rownumbers:tr

  • linux 使用bond实现双网卡绑定单个IP的示例代码

    双网卡绑定单个IP 地址 为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断. bond在Linux下叫bonding,IBM称为etherchanel,broadcom叫team,但是名字怎么变,效果都是将两块或更多的网卡当做一块网卡使用,在增加带宽的同时也可以提高冗余性. 实现双网卡绑定的方法有两种: bond和team 这里先记下bond的绑定方法 bond支持的模式 共支持bond[0-6]共七种模式,常用

  • MyBatis-Plus实现多数据源的示例代码

    多数据源的目的在于一个代码模块可调用多个数据库的数据进行某些业务操作. MyBatis-Plus开发者写了一个多数据源叫dynamic-datasource-spring-boot-starter,非常简单易用. dynamic-datasource-spring-boot-starter文档 官方文档部分截图: 第三方集成的,基本上是目前比较主流的(用的比较多). 一.添加Maven依赖 <dependency> <groupId>com.baomidou</groupId

  • python实现xml转json文件的示例代码

    使用了Python的 xml.etree.ElementTree 库 xml.etree.ElementTree 库简介 xml.etree.ElementTree模块实现了一个简单而高效的API用于解析和创建XML数据.xml.etree.ElementTree模块对于恶意构造的数据是不安全的.如果您需要解析不受信任或未经验证的数据,请参阅XML漏洞. 参考文献:https://docs.python.org/3.6/library/xml.etree.elementtree.html fro

  • C/C++ QT实现解析JSON文件的示例代码

    JSON是一种轻量级的数据交换格式,它是基于ECMAScript的一个子集,使用完全独立于编程语言的文本格式来存储和表示数据,简洁清晰的的层次结构使得JSON成为理想的数据交换语言,Qt库为JSON的相关操作提供了完整的类支持. 创建一个解析文件,命名为config.json我们将通过代码依次解析这个JSON文件中的每一个参数,具体解析代码如下: { "blog": "https://www.cnblogs.com/lyshark", "enable&qu

  • Easyui笔记2:实现datagrid多行删除的示例代码

    如何实现datagrid多行删除? 最近在前端界面开发中,使用了datagrid组件.需要完成一个多行勾选并删除的功能. 查看easyui api,其中有一个deleteRow方法,传入要删除行的索引,即可删除该行. 错误做法 于是准备用deleteRow方法和onChecked和onUncheck事件配合使用,来完成多行删除功能. 当用户勾选一行时,触发onChecked事件,将onChecked事件传进来的index索引push到一个全局array中. 当用户取消勾选的时候,触发onUnch

  • SpringBoot整合JDBC、Druid数据源的示例代码

    1.SpringBoot整合JDBCTemplate 1.1.导入jdbc相关依赖包 主要的依赖包: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>mysql</gro

  • 基于mybatis plus实现数据源动态添加、删除、切换,自定义数据源的示例代码

    目录 简介 代码示例 mavne依赖 数据源增加.移除 数据源切换 基于AOP切换 基于重写处理器 自定义数据源 简介 基于springboot,mybatis plus集成了一套多数据源的解决方案,在使用时引入相应的插件dynamic-datasource-spring-boot-starter,可以实现数据源的动态添加.删除等功能,对于多租户或者分库等操作可以根据AOP切面代理到不同的数据源.实现单一系统数据隔离的目的. 代码示例 mavne依赖 <!--mybatis-plus--> &

  • jQuery中使用Ajax获取JSON格式数据示例代码

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSONM文件中包含了关于"名称"和"值"的信息.有时候我们需要读取JSON格式的数据文件,在jQuery中可以使用Ajax或者 $.getJSON()方法实现. 下面就使用jQuery读取music.txt文件中的JSON数据格式信息. 首先,music.txt中的内容如下: 复制代码 代码如下: [ {"optionKey":"1"

随机推荐