开发者问题收集

合并数据表中的列

2018-03-29
231

我正在尝试创建数据表以使用导出选项。我知道如果标签不正确,表格将无法工作。我正在尝试实现一个表格,其中列出食谱成分、其数量和方法。由于我只希望方法显示一次,我想合并最后一列并将其放在中间 - 这就是问题发生的地方。我创建了一个 if 语句来检查方法是否已被打印。一切都按我希望的方式显示,使用以下代码,但我不知道如何正确关闭 td 标签....

我收到的错误是:

Uncaught TypeError: Cannot set property '_DT_CellIndex' of undefined

<table id="table_id" class="display" width="50">
<thead>
    <tr>
        <th>
            Quantity
        </th>
        <th>
            Ingredient
        </th>
        <th>
            Method
        </th>
    </tr>
</thead>
<tbody>
<?php
$ifExists = false;
while ($dbRow2 = $dbQuery3->fetch(PDO::FETCH_ASSOC)) {
    $ingredients=$dbRow2["ingredient"];
    $quantity=$dbRow2["quantity"];
    echo '<tr>';
    echo '<td>';
    echo "$quantity";
    echo '</td>';
    echo '<td>';
    echo "$ingredients";
    echo '</td>';
    $count=$dbQuery3->rowCount();

    if($ifExists == false){
        echo "<td rowspan='$count'>";
        echo "$method";
        echo '</td>';
        $ifExists = true;
        echo '</tr>';
    }
    else {
        echo '</td>';
        echo '</tr>';   
    }   
}
2个回答

兄弟,错误很简单 想想如果你的 else 部分被执行,那么它会尝试关闭没有打开的 </td>

试试这个

else {
//  echo '</td>';
    echo '</tr>';   
}   
Alvis Vadaliya
2018-03-29

我认为 DataTables 目前不支持在表体内部实现行跨度(仅在标题中)。但是,有些插件可用于将单元格组合在一起以充当行跨度 - 尝试使用 rowsGroup 插件( https://github.com/ashl1/datatables-rowsgroup )。

在 DataTable 调用中使用此插件,您可以执行以下操作:

var table = $('#table_id').DataTable({'rowsGroup': [2]});

让我知道您的进展如何!

Matthew Heath
2018-03-29