rad*_*ken 3 javascript jquery datatables
我正在使用:jquery.dataTables.js来自:https://datatables.net
问题1 - 用户添加新行后,拖放功能不起作用
我需要的是:点击铅笔后可以编辑行.
与此示例类似:https: //editor.datatables.net/examples/simple/inTableControls.html
HTML:
<table id="example" class="display" width="100%" cellspacing="0">
<thead>
<tr>
<th>order</th>
<th>name</th>
<th>country</th>
<th>action</th>
</tr>
</thead>
</table>
<button id="addRow">Add New Row</button>
<table id="newRow">
<tbody>
<tr>
<td><select id="selectbasic" name="selectbasic" class="form-control">
<option value="1">option 1</option>
<option value="2">option 2</option>
<option value="2">option 3</option>
</select>
</td>
<td>DVap
</td>
<td>
www</td>
<td><i class="fa fa-pencil-square" aria-hidden="true"></i>
<i class="fa fa-minus-square" aria-hidden="true"></i> </td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
jQuery的:
$(document).ready(function() {
var dt = $('#example').dataTable();
dt.fnDestroy();
});
$(document).ready(function() {
var url = 'http://www.json-generator.com/api/json/get/ccTtqmPbkO?indent=2';
var table = $('#example').DataTable({
ajax: url,
rowReorder: {
dataSrc: 'order',
},
columns: [{
data: 'order'
}, {
data: 'place'
}, {
data: 'name'
}, {
data: 'delete'
}],
"initComplete": function(oSettings) {
$(this).on('click', "i.fa.fa-minus-square", function(e) {
table.row( $(this).closest('tr') ).remove().draw();
});
}
});
// add row
$('#addRow').click(function() {
//t.row.add( [1,2,3] ).draw();
var rowHtml = $("#newRow").find("tr")[0].outerHTML
console.log(rowHtml);
table.row.add($(rowHtml)).draw();
});
});
Run Code Online (Sandbox Code Playgroud)
jsfiddle:http: //jsfiddle.net/5L2qy092/5/
现在你可以拖放所有行而不仅仅是第一个td.
编辑也是内联表格.我相信这就是你想要的:工作演示.
<script>
$(document).ready(function() {
var table;
$("#example").on("mousedown", "td .fa.fa-minus-square", function(e) {
table.row($(this).closest("tr")).remove().draw();
})
$("#example").on('mousedown.edit', "i.fa.fa-pencil-square", function(e) {
$(this).removeClass().addClass("fa fa-envelope-o");
var $row = $(this).closest("tr").off("mousedown");
var $tds = $row.find("td").not(':first').not(':last');
$.each($tds, function(i, el) {
var txt = $(this).text();
$(this).html("").append("<input type='text' value='" + txt + "'>");
});
});
$("#example").on('mousedown', "input", function(e) {
e.stopPropagation();
});
$("#example").on('mousedown.save', "i.fa.fa-envelope-o", function(e) {
$(this).removeClass().addClass("fa fa-pencil-square");
var $row = $(this).closest("tr");
var $tds = $row.find("td").not(':first').not(':last');
$.each($tds, function(i, el) {
var txt = $(this).find("input").val()
$(this).html(txt);
});
});
$("#example").on('mousedown', "#selectbasic", function(e) {
e.stopPropagation();
});
var url = 'http://www.json-generator.com/api/json/get/ccTtqmPbkO?indent=2';
table = $('#example').DataTable({
ajax: url,
rowReorder: {
dataSrc: 'order',
selector: 'tr'
},
columns: [{
data: 'order'
}, {
data: 'place'
}, {
data: 'name'
}, {
data: 'delete'
}]
});
// add row
$('#addRow').click(function() {
//t.row.add( [1,2,3] ).draw();
var rowHtml = $("#newRow").find("tr")[0].outerHTML
console.log(rowHtml);
table.row.add($(rowHtml)).draw();
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
我使用此代码使用 Modal 编辑或更新 DataTable 上的特定行索引,其中它是我页面的不同部分。大多数示例指向当您单击数据表的一部分时,您可以从那里更新它。不幸的是,我需要使用 Bootstrap 的 Modal 更新它:
var table = $('#tblSchedule').DataTable();
table.row($('#hdnRowClicked').val()).data([
"Tiger Nixon",
"System Architect",
"$3,120",
"2011/04/25",
"Edinburgh",
"5421",
"Tiger Nixon",
"System Architect",
"$3,120",
"<p>Hello</p>"
]).draw();
Run Code Online (Sandbox Code Playgroud)
为了获取行索引,每当有人btn-edit使用 ID 为的隐藏标记元素单击我的编辑按钮时,我都会保存行索引hdnRowClicked:
$('#tblRecord .btn-edit').click(function () {
$('#hdnRowClicked').val($(this).parents('tr').index());
});
Run Code Online (Sandbox Code Playgroud)