我正在尝试向数据表中添加一行,而没有运气的texbox和复选框作为列。我能够轻松地添加其他列,但是带有文本框和复选框的那些列不知道如何做到这一点。将评估文本框和复选框ID,并使用第一列值附加其类型。我想知道实现这个目标的好方法是什么?我不打算克隆一行,因为可能存在我的表可能没有任何数据的情况。有什么想法吗?
以下是客户端代码:
$(function () {
var tableOpts = {
"sPaginationType": "full_numbers",
"sScrollY": "150px",
"bFilter": false,
"fnCreatedRow": function (nRow, aData, iDataIndex) {
$(nRow).attr('id', aData[0]);
var txtBox = $(nRow).find("input[type=text]");
txtBox.attr('id', 'text-' + aData[0]);
var checkBox = $(nRow).find("input[type=checkbox]");
checkBox.attr('id', 'check-' + aData[0]);
}
}
var table1 = $('#table1').dataTable(tableOpts);
$('#divButton').find('.toggle').on('click', function () {
table1.fnAddData([4, 'Windows 7',7.1]);
});
});
这里是JSFiddle
答案 0 :(得分:2)
你可以试试这个:
$(function () {
var tableOpts = {
"sPaginationType": "full_numbers",
"sScrollY": "150px",
"bFilter": false,
"fnCreatedRow": function (nRow, aData, iDataIndex) {
$(nRow).attr('id', aData[0]);
var txtBox = $(nRow).find("input[type=text]");
txtBox.attr('id', 'text-' + aData[0]);
var checkBox = $(nRow).find("input[type=checkbox]");
checkBox.attr('id', 'check-' + aData[0]);
}
}
var table1 = $('#table1').dataTable(tableOpts);
var textbox = '<input type="text" class="txtBox">';
var checkbox = '<input type="checkbox">';
$('#divButton').find('.toggle').on('click', function () {
table1.fnAddData([table1.fnSettings().fnRecordsTotal() + 1, 'Windows 7',7.1, textbox, checkbox]);
});
});
这是FIDDLE
。
答案 1 :(得分:1)
您应该使用column rendering,而不是fnCreatedRow
/ createdRow
。这里有一些如何插入各种<form>
<input>
元素的示例:
...
aoColumnDefs : [
{ aTargets : [1],
mRender : function(data, type, full) {
return '<input type="text" value="'+data+'"/>'
}
},
{ aTargets : [2],
mRender : function(data, type, full) {
return '<input type="checkbox" checked="checked"/>'
}
},
{ aTargets : [3],
mRender : function(data, type, full) {
return '<textarea>'+data+'</textarea>'
}
}
]
使用了&#34; oldschool&#34;匈牙利表示法,它适用于1.9.x和1.10.x版本的数据表。一个小的演示(刚刚将aoColumnDefs
添加到现有的演示中,除了演示之外它没有任何意义) - &gt;的 http://jsfiddle.net/f6fqa641/ 强>