2017-07-14 98 views
0

我想重新排序表和排序表,但在这个代码块,他们不工作。我的问题在哪里?jquery数据表排序和rowReorder不起作用

<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs/dt-1.10.15/af-2.2.0/b-1.3.1/b-colvis-1.3.1/b-flash-1.3.1/cr-1.3.3/fc-3.2.2/fh-3.1.2/kt-2.2.1/rg-1.0.0/rr-1.2.0/sc-1.4.2/se-1.2.2/datatables.min.css"/> 

HTML

<thead> 
    <tr> 
     <th id="tdbicim">ID</th> 
     <th id="tdbicim">Data One</th> 
     <th id="tdbicim">Data Two</th> 
    </tr> 
</thead> 

<tbody id="MyTbody"></tbody> 

JS

var MyTbody = document.getElementById("MyTbody"); 

$('#MyTable').DataTable({ 
    "paging": false, 
    "lengthChange": false, 
    "searching": false, 
    "ordering": true, 
    "info": false, 
    "autoWidth": false, 
    "rowReorder": true 
}); 

var Row = document.createElement("tr"); 
var Column = document.createElement("td"); 

Column.appendChild(document.createTextNode("1")); 
Row.appendChild(Column); 

Column = document.createElement("td"); 
Column.appendChild(document.createTextNode("Data One Column")); 
Row.appendChild(Column); 

Column = document.createElement("td"); 
Column.appendChild(document.createTextNode("Data Two Column")); 
Row.appendChild(Column); 

// Add row 
MyTbody.appendChild(Row); 

Row = document.createElement("tr"); 
Column = document.createElement("td"); 
Column.appendChild(document.createTextNode("2")); 
Row.appendChild(Column); 

Column = document.createElement("td"); 
Column.appendChild(document.createTextNode("Data One Column")); 
Row.appendChild(Column); 

Column = document.createElement("td"); 
Column.appendChild(document.createTextNode("Data Two Column")); 
Row.appendChild(Column); 

// Add row 
MyTbody.appendChild(Row); 

Row = document.createElement("tr"); 
Column = document.createElement("td"); 
Column.appendChild(document.createTextNode("3")); 
Row.appendChild(Column); 

Column = document.createElement("td"); 
Column.appendChild(document.createTextNode("Data One Column")); 
Row.appendChild(Column); 

Column = document.createElement("td"); 
Column.appendChild(document.createTextNode("Data Two Column")); 
Row.appendChild(Column); 

// Add row 
MyTbody.appendChild(Row); 

https://jsfiddle.net/txsnyh66/

回答

1

那么我可以说你的问题的两件事情。

1.您在初始化数据表后动态添加行。所以,你可以初始化DataTable之后你动态生成表检查:

var MyTbody = document.getElementById("MyTbody"); 
 
var Row = document.createElement("tr"); 
 
var Column = document.createElement("td"); 
 
Column.appendChild(document.createTextNode("1")); 
 
Row.appendChild(Column); 
 

 
Column = document.createElement("td"); 
 
Column.appendChild(document.createTextNode("Data One Column")); 
 
Row.appendChild(Column); 
 

 
Column = document.createElement("td"); 
 
Column.appendChild(document.createTextNode("Data Two Column")); 
 
Row.appendChild(Column); 
 

 
MyTbody.appendChild(Row); 
 

 
Row = document.createElement("tr"); 
 
Column = document.createElement("td"); 
 
Column.appendChild(document.createTextNode("2")); 
 
Row.appendChild(Column); 
 

 
Column = document.createElement("td"); 
 
Column.appendChild(document.createTextNode("Data One Column")); 
 
Row.appendChild(Column); 
 

 
Column = document.createElement("td"); 
 
Column.appendChild(document.createTextNode("Data Two Column")); 
 
Row.appendChild(Column); 
 

 
MyTbody.appendChild(Row); 
 

 
Row = document.createElement("tr"); 
 
Column = document.createElement("td"); 
 
Column.appendChild(document.createTextNode("3")); 
 
Row.appendChild(Column); 
 

 
Column = document.createElement("td"); 
 
Column.appendChild(document.createTextNode("Data One Column")); 
 
Row.appendChild(Column); 
 

 
Column = document.createElement("td"); 
 
Column.appendChild(document.createTextNode("Data Two Column")); 
 
Row.appendChild(Column); 
 

 
MyTbody.appendChild(Row); 
 

 
// Initialize DataTable after table is generated 
 
$('#MyTable').DataTable({ 
 
    "paging": false, 
 
    "lengthChange": false, 
 
    "searching": false, 
 
    "ordering": true, 
 
    "info": false, 
 
    "autoWidth": false, 
 
    "rowReorder": true 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs/dt-1.10.15/af-2.2.0/b-1.3.1/b-colvis-1.3.1/b-flash-1.3.1/cr-1.3.3/fc-3.2.2/fh-3.1.2/kt-2.2.1/rg-1.0.0/rr-1.2.0/sc-1.4.2/se-1.2.2/datatables.min.css" /> 
 
<script type="text/javascript" src="https://cdn.datatables.net/v/bs/dt-1.10.15/af-2.2.0/b-1.3.1/b-colvis-1.3.1/b-flash-1.3.1/cr-1.3.3/fc-3.2.2/fh-3.1.2/kt-2.2.1/rg-1.0.0/rr-1.2.0/sc-1.4.2/se-1.2.2/datatables.min.js"></script> 
 

 
<table id="MyTable" class="table table-bordered "> 
 
    <thead> 
 
    <tr> 
 
     <th id="tdbicim">ID</th> 
 
     <th id="tdbicim">Data One</th> 
 
     <th id="tdbicim">Data Two</th> 
 
    </tr> 
 
    </thead> 
 

 
    <tbody id="MyTbody"> 
 
    </tbody> 
 

 
</table>

2.但是,如果你想动态生成的表,我建议你使用数据表本身为此,像这样:

var dataSet = [ 
 
[1, "Aaaa", "ddd"], 
 
[2, "DASD", "564"], 
 
[3, "HH", "dsdfd"], 
 
]; 
 
    
 
$(document).ready(function() { 
 
    $('#MyTable').DataTable({ 
 
     data: dataSet, 
 
     columns: [ 
 
      { title: "ID" }, 
 
      { title: "Column 1" }, 
 
      { title: "Column 2" } 
 
     ] 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs/dt-1.10.15/af-2.2.0/b-1.3.1/b-colvis-1.3.1/b-flash-1.3.1/cr-1.3.3/fc-3.2.2/fh-3.1.2/kt-2.2.1/rg-1.0.0/rr-1.2.0/sc-1.4.2/se-1.2.2/datatables.min.css" /> 
 
<script type="text/javascript" src="https://cdn.datatables.net/v/bs/dt-1.10.15/af-2.2.0/b-1.3.1/b-colvis-1.3.1/b-flash-1.3.1/cr-1.3.3/fc-3.2.2/fh-3.1.2/kt-2.2.1/rg-1.0.0/rr-1.2.0/sc-1.4.2/se-1.2.2/datatables.min.js"></script> 
 

 
<table id="MyTable"></table>

我鼓励你使用2号解决方案,它更清洁和优雅。祝你好运!