This article mainly introduces the sample code of EasyUI's DataGrid binding Json data source. The editor thinks it is quite good, so I will share it with you now and give it as a reference. Let’s follow the editor to take a look.
EasyUI is the most commonly used method to bind data to tables. The editor will share the two summarized methods of binding tables. Knowledge lies in accumulation.
The first type: the data is stored in the data set, each row corresponds to multiple values, and a loop is used to bind the data to the table
Front-end code:
列1 | 列2 | 列3 | 列4 | 列5 | 列6 |
---|
JS code:
(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"); } });
Call the AJAX method when you need to bind the table. After AJAX is executed, the display data method will be automatically called, and the table data will be displayed.
Second: Set it up directly in the front desk and JS Column name, automatic binding
Front-end code:
列名1 | 列名2 | 列名3 | 列名4 | 列名5 | 列名6 |
---|
JS code:
$('#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) { //表格加载成功后执行的代码,如果不需要可以删除 } })
Just put the JS code in a function function, and the function will be executed Then the form can be bound to data
The above is what I compiled for everyone. I hope it will be helpful to everyone in the future.
Related articles:
Detailed introduction to controlled components and uncontrolled components in React
How to implement a basic shopping cart using Angular Function
Detailed introduction to routing and middleware in node.js
How to implement entry/leave animation in Vue
Detailed interpretation of the entry function run in webpack
The above is the detailed content of How to bind Json data source using EasyUI. For more information, please follow other related articles on the PHP Chinese website!