2

我有一段代码在其中使用数据表插件。

表结构如下所示:

<thead>
    <tr>
        <th>col1</th>
        <th>col2</th>
        <th>col3</th>
        <th>col4</th>
        <th>col5</th>
        <th>col6</th>
        <th>col7</th>
        <th>col8</th>
    </tr>
</thead>

但请注意,在初始化代码中,我隐藏了最后四列。

在我的代码中,我执行以下操作:

if($data->responseCode < 400)
{
    echo HTML Table
}

这样可行

else
{
    echo '<tr><td colspan=4><h1 class="error">'.$data->errorMsg.'</h1></td></tr>';
}

当我这样做时,我收到以下错误:

“DataTables 警告(表 id = 'DataTables_Table_0'):从第 0 行的数据源请求未知参数 '1'”

这是数据代码:

var oTable = $('.table1').DataTable({
    "iDisplayLength": 100,
    "aaSortingFixed": [[0,'desc']],
    "aaSorting": [ [0,'asc'] ],
    "aoColumnDefs": [
          { "bVisible": false, "aTargets": [ 4,5,6,7 ] },
          { "bSearchable": false, "aTargets": [ 1,2,3,4,5,6,7] },
          { "bSearchable": true, "aTargets": [ 0 ] },
        ]
});

有人知道是什么原因造成的吗?我想也许是 colspan 但是当我删除它时,问题仍然存在。奇怪的是我在另一个页面上使用它,它似乎可以很好地处理一个空的结果集。

不知道这是否有帮助,但在玩了一点之后,我设法让以下错误出现在 firebug 中:

“类型错误:nTd 未定义”

4

4 回答 4

5

如果您经常使用数据表,那么这是您会遇到的常见错误。原因是您用于创建数据表的数据格式与表列不匹配,例如您有 4 列,而源数据只能提供 3 列。您可以发布数据格式和表结构,让我检查进一步的问题。

于 2013-03-21T09:04:58.903 回答
2

您可以用一个小逻辑来解决这个问题,检查空记录并为每个数据表动态设置表类。

<table class="table table-striped table-bordered <?php echo !empty($rows) ? 'data-table-display-class' : ''; ?>">
于 2018-09-13T17:24:12.550 回答
1

这是因为 dataTable 检查标题和正文表中“列”的匹配总数

else
    {
        echo '<tr><td>'.$data->errorMsg.'</td>
              <td></td>
              <td></td>
              <td></td>
              <td></td>
              <td></td>
              <td></td>
              <td></td>
              </tr>';
    }

它将显示为空行,并且在您的行的第一列中显示 errorMsg。

于 2016-11-15T14:33:12.630 回答
0

您的else声明不包含tableHTML 开始标记,也许这就是问题所在,您只回显了一行。尝试

else
{
    echo '<table id="table_id" class="table1"><tr><td colspan=4><h1 class="error">'.$data->errorMsg.'</h1></td></tr></table>';
}
于 2013-03-21T08:56:28.070 回答