You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中使用rowspan时DataTables报错无法正常显示求助

问题解决:DataTables结合rowspan时的_DT_CellIndex报错

问题原因

DataTables要求表格的每一行单元格数量必须与表头列数完全一致。你当前的代码中,使用rowspan合并Date和Action列后,后续的产品行缺少了这两列的单元格,导致行内单元格总数少于表头的9列,DataTables无法正确初始化单元格索引,从而抛出Uncaught TypeError: Cannot set properties of undefined (setting '_DT_CellIndex')错误。

解决方案

给缺少单元格的行补充对应数量的空单元格,保证每行单元格数与表头一致:

修改后的表格循环代码

@foreach ($stocks as $index => $stock)
    @php
        $count = $stock->products->count();
    @endphp
    <tr>
        <td rowspan="{{ $count }}" class="align-middle rowspan-cell">
            {{ $stock->date }}
        </td>
        <td>{{ $stock->products?->first()?->plant_name }}</td>
        <td>{{ $stock->products?->first()?->mainProduct->name }}</td>
        <td>{{ $stock->products?->first()?->mainSize->size }}</td>
        <td>{{ $stock->products?->first()?->cement_packs }}</td>
        <td>{{ $stock->products?->first()?->no_pallets }}</td>
        <td>{{ $stock->products?->first()?->tiles_pallets }}</td>
        <td>{{ $stock->products?->first()?->total_tiles_sft }}</td>
        <td rowspan="{{ $count }}" class="align-middle rowspan-cell">
            <!-- edit -->
            <a class="btn  btn-sm btn-parrot-green text-white" href=""><i
                    class="fa-solid fa-pencil"></i></a>
            <!-- delete -->
            @php
                $modelId = 'modelDelete' . $stock->id;
            @endphp
            @component('components.delete-model', ['modelId' => $modelId, 'Action' => route('tuffTile.destroy', $stock->id)])
            @endcomponent
        </td>
    </tr>
    @if ($count > 1)
        @foreach ($stock->products->slice(1) as $product)
            <tr>
                <td></td> {{-- 补充Date列的空单元格,匹配rowspan位置 --}}
                <td>{{ $product->plant_name }}</td>
                <td>{{ $product->mainProduct->name }}</td>
                <td>{{ $product->mainSize->size }}</td>
                <td>{{ $product->cement_packs }}</td>
                <td>{{ $product->no_pallets }}</td>
                <td>{{ $product->tiles_pallets }}</td>
                <td>{{ $product->total_tiles_sft }}</td>
                <td></td> {{-- 补充Action列的空单元格,匹配rowspan位置 --}}
            </tr>
        @endforeach
    @endif
@endforeach

优化:隐藏空单元格(可选)

如果不想让空单元格显示,可以用Bootstrap的d-none类隐藏:

<td class="d-none"></td>

这样既满足DataTables的列数要求,又不影响页面视觉效果,DataTables就能正常初始化运行了。

内容的提问来源于stack exchange,提问作者Zeeshan Mushtaq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 17:33:33