jQuery Datatables 父子数据

5
我正在使用这个Datatables Demo来展示子行,并使用php返回数据数组。目前我已经基本实现,但还存在一些问题。

下面是当前的图片。 enter image description here

如图所示,有两个相同问题的父行和不同答案的子行。

1. 我需要限制每个不同问题的父行只有一个。

2. 我还需要一种方式在同一个子表中循环显示多个子行。

3. 另一种选项是如何将数据分配给父行和另一组数据分配给子行。

我知道应该在查询中完成,但问题列是单独的结果,位于两个不同的表中。使用查询的唯一方法是对问题返回一个结果,然后进行另一个ajax调用以填充子行。我认为这样会更容易。

代码:

表格:

<table id="car" class="display" cellspacing="0" width="100%">
      <thead>
         <tr>
           <th class="details-control" style="max-width: 80px;">Expand</th>
           <th>Question</th>
         </tr>
       </thead>
       <tbody>
       </tbody>
        <tfoot>
           <tr>
             <th></th>
             <th>Question</th>
           </tr>
         </tfoot>
       </table>

脚本:

 function format(d) {
        //d is the original data object for the row
        var tbl = '<table cellpadding="5" cellspacing="0" border="0" style="margin-left:110px; width:100%; font-size:12px;">' +
              '<tr>' +
              '<th style="width:60%; color:3383bb;">Answer Choices</th>' +
              '<th style="width:15%; color:3383bb;"># of Answers</th>' +
              '<th style="width:15%; color:3383bb;">Percentage</th>' +
              '</tr>' + '<tr>' +
              '<td>' + d.Answer + '</td>' +
              '<td>' + d.NumberOfAnswers + '</td>' +
              '<td>' + d.Percent + '</td>' +
              '</tr>' + '</table>';
        return tbl;
    }


    var table2 = $('#car').DataTable({
        "ajax": "/rmsicorp/clientsite/reset/survey/surveyajax.php",
        "scrollY": "400px",
        "paging": false,
        "bAutoWidth": true,
        "columns": [
            {
                "className": 'details-control',
                "orderable": false,
                "data": null,
                "defaultContent": ''
            },
            { "data": "Question" },
        ],
    }).columns.adjust().draw();

查询结果:

在此输入图片描述

每个答案的问题列都是重复的,其余列是不同的。


你是如何检索记录的?第一行:| 问题1 | 答案1 | 第二行:| 问题2 | 答案2 | 第三行:| 问题3 | 答案1 | - Jean Jung
更新的问题,请查看帖子底部。 - M H
1个回答

1
这是一个常见的问题,你可以在查询端或语言端解决。在这种情况下,我更喜欢使用语言端。你可以尝试做以下几点:
  1. 按照问题文本对查询进行排序;
  2. 检查上一个和当前问题是否有相同的文本;
  3. 如果是,则将答案添加到当前问题中;
  4. 否则创建一个新的问题条目。
你需要编辑你的格式化函数来实现这一点,我建议你将其分为两部分,一部分是问题标题,另一部分是答案数据,然后你可以控制:是否呈现标题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接