在选择下拉列表中存储重复的DataTables数据?

时间:2014-11-12 20:09:20

标签: javascript jquery for-loop dynamic datatables

我需要一种优雅的方法来在DataTables中的选择下拉列表中存储重复数据。例如,我有2个问题,每个问题可以有各种答案。在这种情况下,问题1(keyno 1)有2个可能的答案,问题2(keyno 2)有3个可能的答案。在小提琴示例中,有5行(其中包含重复信息)但是应该只有2行(每个keyno一个)。如何动态创建包含答案的下拉列表,只显示我的2行,如for循环?我不确定。

http://jsfiddle.net/s827x/28/

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' }
            ]
    });

1 个答案:

答案 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>');

                    }
                }
            }); 
        }
    });