【问题标题】:Utilizing Jquery Datatables API in custom map function在自定义地图功能中使用 Jquery Datatables API
【发布时间】:2017-05-29 21:31:00
【问题描述】:

我想使用 Datatables 自己的 API 函数而不是使用常规的 html 表格选择器从 Datatables 获取数据。我也在使用编辑器版本(未显示在 sn-ps 中)并且我正在使用本地表编辑功能(我想一次批处理并发送所有数据)

我尝试了以下代码,它访问了 API 数据,但我无法跳过单元格。

 var data = $('#PrtTbl').find('tr').map(function () {
                return PrtTbl.row(this).data() 
            }).get()
            console.log(JSON.stringify(data))

我想申请这个code 映射 HTML 表格并允许我选择某些单元格,但 问题是我不知道如何访问 API 存储的数据, 只有 API 函数可以让我访问存储的数据和隐藏的列

var tbl = $('#RegSrc tr:has(td)').map(function(i, v) {
var $td = $('td', this);
return {
  RecID: $td.eq(0).text(),
  PtFilenum: $td.eq(1).text(),
  Status: $td.eq(5).text()
} }).get();

我的目标是这样的

{
"data": {
    "2383": {
        "RecID": 2383,
        "PtFilenum": "15090248",
        "PrtFilenum": 13090701,
        "PrtStatus": ""
    },
    "3387": {
        "RecID": 3387,
        "PtFilenum": "15090248",
        "PrtFilenum": 15120996,
        "PrtStatus": ""
    },
    "3388": {
        "RecID": 3388,
        "PtFilenum": "15090248",
        "PrtFilenum": 170227111,
        "PrtStatus": ""
    }
}}

下面这个 sn-p 显示了两个代码的结果

var tablenest = $('#RegSrc').DataTable({
  select: true,
  "bPaginate": false,
  "bFilter": false,
  responsive: true,
  deferRender: true,
  "processing": true,
  "serverSide": false,
  bAutoWidth: true,
  data: [{
    "RecID": 2383,
    "PtFilenum": 15090248,
    "PrtFilenum": 13090701,
    "Fullname": " sadden ",
    "PrtStatus": 1
  }, {
    "RecID": 2384,
    "PtFilenum": 15090248,
    "PrtFilenum": 15120996,
    "Fullname": "marwam mohmmad saleem",
    "PrtStatus": 1
  }, {
    "RecID": 2385,
    "PtFilenum": 15090248,
    "PrtFilenum": 170227111,
    "Fullname": "asd dsf a",
    "PrtStatus": 1
  }],
  order: [2, 'asc'],
  keys: {
    columns: ':not(:first-child)',
    keys: [9]
  },
  columns: [{ // Checkbox select column
      data: null,
      defaultContent: '',
      className: 'select-checkbox',
      orderable: false,
      "width": "1%"
    },
    {
      "width": "50%",
      data: "RecID",
      "visible": false
    },
    {
      "width": "50%",
      data: "PtFilenum",
      "visible": false
    },
    {
      "width": "10%",
      data: "PrtFilenum"
    },
    {
      "width": "40%",
      data: "Fullname"
    },
    {
      "width": "10%",
      data: "PrtStatus",
      render: function(data, type, row) {
        if (type === 'display') {
          if (data == 1) {
            return 'Partners';
          } else {
            return 'Not Partners';
          }
        }
        return data;
      },
      className: "dt-body-center"
    },
  ],

});

$("#btn1").click(function() {
  var tbl = $('#RegSrc tr:has(td)').map(function(i, v) {
    var $td = $('td', this);
    return {
      RecID: $td.eq(0).text(),
      PtFilenum: $td.eq(1).text(),
      Status: $td.eq(5).text()
    }
  }).get();
  console.log(JSON.stringify(tbl))
  return false;
})

$("#btn2").click(function() {
  var data = $('#RegSrc').find('tr').map(function() {
    return tablenest.row(this).data()
  }).get()
  console.log(JSON.stringify(data))
  return false;
})
$("#btn3").click(function() {
  var tbl = $('#RegSrc tr:has(td)').map(function(i, v) {
    return {
      RecID: tablenest.cell(this, 1).data(),
      PtFilenum: tablenest.cell(this, 2).data(),
      PrtFilenum: tablenest.cell(this, 3).data(),
      PrtStatus: tablenest.cell(this, 5).data()

    }
  }).get();
  console.log(JSON.stringify(tbl))
  return false;
})
<link href="https://cdn.datatables.net/1.10.15/css/dataTables.bootstrap.min.css" rel="stylesheet" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script>

<script src="https://cdn.datatables.net/1.10.15/js/dataTables.bootstrap.min.js"></script>



<script type="text/javascript" charset="utf-8" src="https://cdn.datatables.net/v/dt/jqc-1.12.4/moment-2.18.1/dt-1.10.15/b-1.3.1/se-1.2.2/datatables.min.js"></script>



<button id="btn1" class="btn btn-primary">Code1</button>
<button id="btn2" class="btn btn-primary">Code2</button>
<button id="btn3" class="btn btn-primary">Code3</button>
<table id="RegSrc" class="table table-bordered table-striped table-condensed mb-none display responsive nowrap" cellspacing="0" width="100%">
  <thead>
    <tr>
      <th></th>
      <th><b>RecID</b></th>
      <th><b>Patient File Number</b></th>
      <th><b>Partner File Number</b></th>
      <th><b>Patient Name</b></th>
      <th><b>Status</b></th>
    </tr>
  </thead>
  <tbody>
  </tbody>
</table>

更新 我添加了这段代码,它似乎可以正常工作,

 var tbl = $('#RegSrc tr:has(td)').map(function(i, v) {
return {
  RecID: tablenest.cell(this, 1).data(),
  PtFilenum: tablenest.cell(this, 2).data(),
  PrtFilenum: tablenest.cell(this, 3).data(),
  PrtStatus: tablenest.cell(this, 5).data()

}  }).get();

但我仍然无法达到预期的结果

有什么帮助吗?

【问题讨论】:

    标签: datatables


    【解决方案1】:

    所以我从here得到了解决方案

    我发布了两个代码, 其中一个“Code1”,与表一起工作,但不循环页面中的记录,而 Code2 循环所有页面(Pure Datatables API 使用)

    var tablenest = $('#RegSrc').DataTable({
      select: true,
      "bPaginate": false,
      "bFilter": false,
      responsive: true,
      deferRender: true,
      "processing": true,
      "serverSide": false,
      bAutoWidth: true,
      data: [{
        "RecID": 2383,
        "PtFilenum": 15090248,
        "PrtFilenum": 13090701,
        "Fullname": " sadden ",
        "PrtStatus": 1
      }, {
        "RecID": 2384,
        "PtFilenum": 15090248,
        "PrtFilenum": 15120996,
        "Fullname": "marwam mohmmad saleem",
        "PrtStatus": 1
      }, {
        "RecID": 2385,
        "PtFilenum": 15090248,
        "PrtFilenum": 170227111,
        "Fullname": "asd dsf a",
        "PrtStatus": 1
      }],
      order: [2, 'asc'],
      keys: {
        columns: ':not(:first-child)',
        keys: [9]
      },
      columns: [{ // Checkbox select column
          data: null,
          defaultContent: '',
          className: 'select-checkbox',
          orderable: false,
          "width": "1%"
        },
        {
          "width": "50%",
          data: "RecID",
          "visible": false
        },
        {
          "width": "50%",
          data: "PtFilenum",
          "visible": false
        },
        {
          "width": "10%",
          data: "PrtFilenum"
        },
        {
          "width": "40%",
          data: "Fullname"
        },
        {
          "width": "10%",
          data: "PrtStatus",
          render: function(data, type, row) {
            if (type === 'display') {
              if (data == 1) {
                return 'Partners';
              } else {
                return 'Not Partners';
              }
            }
            return data;
          },
          className: "dt-body-center"
        },
      ],
    
    });
    
    $("#btn1").click(function() {
      var tbl = $('#RegSrc tr:has(td)').map(function(i, v) {
        var myObject = new Object();
        var Data = tablenest.cell(this, 1).data()
        myObject[Data] = {
          RecID: tablenest.cell(this, 1).data(),
          Status: tablenest.cell(this, 5).data(),
        }
        return myObject
      }).get();
    
      var dt = {}
      dt.data = tbl
      console.log(JSON.stringify(dt))
      return false;
    })
    
    $("#btn2").click(function() {
      var tbldta = $.map(tablenest.rows().data(), function(d, i) {
        var myObject = new Object();
        var Data = d.RecID
        myObject[Data] = {
          RecID: d.RecID,
          PrtStatus: d.PrtStatus
        }
        return myObject
      });
      var DtaObj = {}
      DtaObj.data = tbldta
      console.log(JSON.stringify(DtaObj))
      return false;
    })
    <link href="https://cdn.datatables.net/1.10.15/css/dataTables.bootstrap.min.css" rel="stylesheet" />
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script>
    
    <script src="https://cdn.datatables.net/1.10.15/js/dataTables.bootstrap.min.js"></script>
    
    
    
    <script type="text/javascript" charset="utf-8" src="https://cdn.datatables.net/v/dt/jqc-1.12.4/moment-2.18.1/dt-1.10.15/b-1.3.1/se-1.2.2/datatables.min.js"></script>
    
    
    
    <button id="btn1" class="btn btn-primary">Code1</button>
    <button id="btn2" class="btn btn-primary">Code2</button>
    
    <table id="RegSrc" class="table table-bordered table-striped table-condensed mb-none display responsive nowrap" cellspacing="0" width="100%">
      <thead>
        <tr>
          <th></th>
          <th><b>RecID</b></th>
          <th><b>Patient File Number</b></th>
          <th><b>Partner File Number</b></th>
          <th><b>Patient Name</b></th>
          <th><b>Status</b></th>
        </tr>
      </thead>
      <tbody>
      </tbody>
    </table>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 2020-04-17
      相关资源
      最近更新 更多