2016-08-12 171 views
2

我想从AJAX调用中以JSON格式的数据构建可编辑表格。为此,我将Datatables插件与免费数据表编辑器(kingkode.com/free-datatables-editor-alternative/)结合使用。我无法使用Datatables Editor,因为我只能使用开源的库。使用Datatables和免费编辑器无法编辑/创建/删除表格中的元素

目前我只是使用我自己的simpleHTTPserver来提供JSON,这就是为什么链接指向本地主机。

该表最初显示正确的数据,但我无法编辑/创建/删除任何元素,因为所选行的值似乎未定义,并且提供了有关确认/提交的错误。

图片的错误:

删除 - 似乎值为undefined Delete - seems that value is undefined

创建 - 错误消息
Create - Error message

我不明白我丢失或做错了,所以任何可以让我走上正轨的帮助将会非常棒!

脚本:

$(document).ready(function() { 

var columnDefs = [{ 
    title: "NTP Servers", 
    data: "ntp_server" 
    }]; 

//Table creation 
var myTable = $('#testTableData').dataTable({ 
    "ajax": "http://localhost:6112/data.php", 
    columns: columnDefs, 
    dom: 'Bfrltip',   
    select: 'single', 
    responsive: true, 
    altEditor: true,  
    buttons: [{ 
      text: 'Create', 
      name: 'add'   
      }, 
      { 
      extend: 'selected', 
      text: 'Edit', 
      name: 'edit'   
      }, 
      { 
      extend: 'selected', 
      text: 'Delete', 
      name: 'delete'  
      },] 
     }); 
}); 

HTML:

<form id="fe"> 
    <div class="container"> 

     <h1>Data Table - Network/Time</h1> 
     <table class="dataTable table table-striped" id="testTableData"> 
     </table> 

    </div> 
    </form> 

JSON数据例如:

{ 
    "data": [{ 
     "DT_RowId": 0, 
     "ntp_server": "1.openwrt.pool.ntp.org" 
    }, { 
     "DT_RowId": 1, 
     "ntp_server": "2.openwrt.pool.ntp.org" 
    }, { 
     "DT_RowId": 2, 
     "ntp_server": "3.openwrt.pool.ntp.org" 
    }] 
} 

我已经包括库:

<script src="libs/js/jquery.js"></script> 
    <script src="libs/js/bootstrap.min.js"></script> 
    <script src="libs/js/jquery.dataTables.min.js"></script> 
    <script src="libs/js/dataTables.bootstrap.min.js"></script> 
    <script src="libs/Buttons-1.2.2/js/dataTables.buttons.min.js"></script> 
    <script src="libs/Buttons-1.2.2/js/buttons.bootstrap.min.js"></script> 
    <script src="libs/Select-1.2.0/js/dataTables.select.min.js"></script> 
    <script src="libs/js/altEditor/dataTables.altEditor.free.js"></script> 
+0

这是什么怪物? 'var json = JSON.stringify(eval('('+ data +')'));' – Ozan

+0

您不应该需要加载数据和渲染表函数,表格表将为您处理。在这里查看文档https://datatables.net/examples/data_sources/ajax.html – IWebb

+0

您只需花费20到30分钟就可以在datatable中实现自己的内联编辑器。 –

回答

2

我检查了dataTables.altEditor.free.js中的代码,发现你确实应该使用一组数组作为数据,否则它将无法工作。因此,有两种方法给你:

  1. 重写dataTables.altEditor.free.js
  2. 重组的数据某些部分像它是在这里:http://jsfiddle.net/rmcmaster/bbLjzspf/22/
+0

啊哈,我会尝试重写编辑器,因为我不认为我可以更改数据格式。谢谢您的回答。 – BaconPancakes