我需要一种优雅的方法来在DataTables中的选择下拉列表中存储重复数据。例如,我有2个问题,每个问题可以有各种答案。在这种情况下,问题1(keyno 1)有2个可能的答案,问题2(keyno 2)有3个可能的答案。在小提琴示例中,有5行(其中包含重复信息)但是应该只有2行(每个keyno一个)。如何动态创建包含答案的下拉列表,只显示我的2行,如for循环?我不确定。
var data = [
{'keyno': '1', 'quest': 'Does a cat meow?', 'ans': 'yes'},
{'keyno': '1', 'quest': 'Does a cat meow?', 'ans': 'no'},
{'keyno': '2', 'quest': 'What color is a stop sign?', 'ans': 'red'},
{'keyno': '2', 'quest': 'What color is a stop sign?', 'ans': 'yellow'},
{'keyno': '2', 'quest': 'What color is a stop sign?', 'ans': 'green'}
]
$('#questtable').DataTable({
"data": data,
"columns": [
{ data: 'keyno' },
{ data: 'quest' },
{ data: 'ans' }
]
});
答案 0 :(得分:0)
我最终做的是为我的问题和数组提供一个数组以获得答案,以及后来匹配的keynos。该表加载问题,重新绘制后,在清除循环以匹配问题的答案后添加下拉选项。 :D http://jsfiddle.net/s827x/37/
$('#questtable').DataTable({
"data": quest,
"columns": [
{ data: 'keyno' },
{ data: 'quest' },
{
data: 'ans',
"mRender": function (data, type, full) {
return '<select id="'+full.keyno+'"></select>';
}
}
],
"fnDrawCallback": function () {
$('#questtable tbody tr').each(function () {
for (var i = 0; i < ans.length; i++) {
if ($(this).find('td').eq(0).text() == ans[i].keyno) {
$(this).find('td').eq(2).find('select').append('<option value="' + ans[i].ans + '">' + ans[i].ans+ '</option>');
}
}
});
}
});