Heim > Web-Frontend > js-Tutorial > Hauptteil

Ausführliche Erläuterung der DataGrid-Bindungsmethode für Json-Datenquellen von EasyUI

小云云
Freigeben: 2017-12-18 10:10:56
Original
4717 Leute haben es durchsucht

EasyUI ist die am häufigsten verwendete Methode zum Binden von Daten an Tabellen. In diesem Artikel wird hauptsächlich der Beispielcode der DataGrid-Bindungs-Json-Datenquelle vorgestellt. Der Herausgeber wird die beiden zusammenfassenden Methoden zum Binden von Tabellen vorstellen und hofft, allen zu helfen.

Der erste Typ: Die Daten werden im Datensatz gespeichert, jede Zeile entspricht mehreren Werten und eine Schleife wird verwendet, um die Daten an die Tabelle zu binden

Frontend Code:


<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>
Nach dem Login kopieren

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(&#39;datagrid&#39;); 
    var opts = dg.datagrid(&#39;options&#39;); 
    if (!state.allRows) { 
      state.allRows = (data.rows); 
    } 
    if (!opts.remoteSort && opts.sortName) { 
      var names = opts.sortName.split(&#39;,&#39;); 
      var orders = opts.sortOrder.split(&#39;,&#39;); 
      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(&#39;getColumnOption&#39;, sn); 
          var sortFunc = col.sorter || function (a, b) { 
            return a == b ? 0 : (a > b ? 1 : -1); 
          }; 
          r = sortFunc(r1[sn], r2[sn]) * (so == &#39;asc&#39; ? 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(&#39;datagrid&#39;); 
        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(&#39;getPager&#39;); 
        pager.pagination({ 
          onSelectPage: function (pageNum, pageSize) { 
            opts.pageNumber = pageNum; 
            opts.pageSize = pageSize; 
            pager.pagination(&#39;refresh&#39;, { 
              pageNumber: pageNum, 
              pageSize: pageSize 
            }); 
            dg.datagrid(&#39;loadData&#39;, state.allRows); 
          } 
        }); 
        $(this).datagrid(&#39;loadData&#39;, state.data); 
        if (opts.url) { 
          $(this).datagrid(&#39;reload&#39;); 
        } 
      }); 
    }, 
    loadData: function (jq, data) { 
      jq.each(function () { 
        $(this).data(&#39;datagrid&#39;).allRows = null; 
      }); 
      return loadDataMethod.call($.fn.datagrid.methods, jq, data); 
    }, 
    deleteRow: function (jq, index) { 
      return jq.each(function () { 
        var row = $(this).datagrid(&#39;getRows&#39;)[index]; 
        deleteRowMethod.call($.fn.datagrid.methods, $(this), index); 
        var state = $(this).data(&#39;datagrid&#39;); 
        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(&#39;loadData&#39;, state.allRows); 
        } 
      }); 
    }, 
    getAllRows: function (jq) { 
      return jq.data(&#39;datagrid&#39;).allRows; 
    } 
  }) 
})(jQuery);
Nach dem Login kopieren


  $.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 
        }); 
      } 
      $(&#39;#dg&#39;).datagrid({ data: rows }).datagrid(&#39;clientPaging&#39;); 
    }, error: function () {            //执行出错时执行的方法 
      $.messager.alert("操作提示", "表格失败,请联系管理员!", "warning"); 
    } 
  });
Nach dem Login kopieren

Wenn Sie eine Tabelle binden müssen, rufen Sie die AJAX-Methode auf. Nachdem AJAX ausgeführt wurde, wird die Anzeigedatenmethode automatisch aufgerufen und die Tabellendaten werden angezeigt

Zweitens Methode: Spaltennamen direkt im Vordergrund und JS festlegen und automatisch binden

Frontend-Code:


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

JS Code:


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

Fügen Sie einfach den JS-Code in eine Funktion ein, und die Tabelle kann Daten binden, wenn die Funktion ausgeführt wird

Verwandt Empfehlungen:

Vertiefte Kenntnisse des JSON-Datenquellenformats_Javascript-Kenntnisse

Was sind die Datenquellen?

Detaillierte Erläuterung von 4 verschiedenen Formen der Datenquellenkonfiguration

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der DataGrid-Bindungsmethode für Json-Datenquellen von EasyUI. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage