0

datatables プラグインを使用して、自分のデータでテーブルをフォーマットしています。

  • コントローラーからモデルを呼び出して、すべてのデータを収集します。
  • データ配列をビュー ファイルに送信します。
  • プラグインを呼び出して通常の html テーブルをデータテーブル テーブルに変換する datatable クラスを使用して、ビューでテーブル タグを開始します。
  • ビューの配列にデータがあることを確認し、ある場合は foreach ループを実行してテーブル行を作成します。データがない場合は、データが見つからないという文字列をエコーアウトします。

私の問題は、データがある場合は正常に動作しますが、データがない場合はRequested Unknown Parameter 1 from the data source for row 0エラーメッセージが表示されます。

以前にこの同じ問題に遭遇した他の人を見たことがありますが、私が見た他のすべての投稿は、特に datatables プラグインを操作しているときに datatables json データを使用したと説明しています。

このエラー メッセージが表示されないようにする方法についてのアイデア。

<table class="dynamicTable table table-striped table-bordered table-condensed">
    <thead>
        <tr>
            <th style="width: 1%;" class="uniformjs" id="checkboxth"><input type="checkbox" /></th>
            <th class="center">ID</th>
            <th>Name</th>
            <th class="center">Date</th>
            <th class="center" id="created_updated"></th>
            <th class="right" id="actions">Actions</th>
        </tr>
    </thead>
    <tbody>
        <?php
        //vardump($themes);
        if (isset($themes) && is_array($themes))
        {
            foreach ($themes AS $theme)
            {
                echo '<tr class="selectable">';
                echo '<td class="center uniformjs"><input type="checkbox" /></td>';
                echo '<td class="center">' . $theme->id . '</td>';
                echo '<td>' . $theme->name . '</td>';
                if ($theme->updated_at != '0000-00-00 00:00:00')
                {
                    echo '<td class="center" style="width: 80px;">' . date('d M Y', strtotime($theme->created_at)) . '</td>';
                    echo '<td class="center" style="width: 80px;"><span class="label label-block label-inverse">updated</span></td>';
                }
                else
                {
                    echo '<td class="center" style="width: 80px;">' . date('d M Y', strtotime($theme->created_at)) . '</td>';
                    echo '<td class="center" style="width: 80px;"><span class="label label-block label-important">created</span></td>';
                }

                echo '<td class="center" style="width: 60px;">';
                echo '<a href="' . base_url() . 'themes/edit/' . $theme->id . '" class="btn-action glyphicons pencil btn-success"><i></i></a>';
                echo '<a href="' . base_url() . 'themes/delete/' . $theme->id . '" class="btn-action glyphicons remove_2 btn-danger"><i></i></a>';
                echo '</td>';
                echo '</tr>';
            } 
        }
        else
        {
            echo '<tr>';
            echo '<td class="center" colspan="7">There are no themes.  Select Add a New Theme.</td>';
            echo '</tr>';
        }
        ?>
    </tbody>
</table>

これは、テーマに付属するコードです。

/* DataTables */
if ($('.dynamicTable').size() > 0)
{
    $('.dynamicTable').dataTable({
        "sPaginationType": "bootstrap",
        "sDom": "<'row-fluid'<'span6'l><'span6'f>r>t<'row-fluid'<'span6'i><'span6'p>>",
        "oLanguage": {
            "sLengthMenu": "_MENU_ records per page"
        }
    });
}
4

1 に答える 1

2

こんにちは、コードからelse条件を削除してください。コードは次のようになります。

<table class="dynamicTable table table-striped table-bordered table-condensed">
    <thead>
        <tr>
            <th style="width: 1%;" class="uniformjs" id="checkboxth"><input type="checkbox" /></th>
            <th class="center">ID</th>
            <th>Name</th>
            <th class="center">Date</th>
            <th class="center" id="created_updated"></th>
            <th class="right" id="actions">Actions</th>
        </tr>
    </thead>
    <tbody>
        <?php
        //vardump($themes);
        if (isset($themes) && is_array($themes))
        {
            foreach ($themes AS $theme)
            {
                echo '<tr class="selectable">';
                echo '<td class="center uniformjs"><input type="checkbox" /></td>';
                echo '<td class="center">' . $theme->id . '</td>';
                echo '<td>' . $theme->name . '</td>';
                if ($theme->updated_at != '0000-00-00 00:00:00')
                {
                    echo '<td class="center" style="width: 80px;">' . date('d M Y', strtotime($theme->created_at)) . '</td>';
                    echo '<td class="center" style="width: 80px;"><span class="label label-block label-inverse">updated</span></td>';
                }
                else
                {
                    echo '<td class="center" style="width: 80px;">' . date('d M Y', strtotime($theme->created_at)) . '</td>';
                    echo '<td class="center" style="width: 80px;"><span class="label label-block label-important">created</span></td>';
                }

                echo '<td class="center" style="width: 60px;">';
                echo '<a href="' . base_url() . 'themes/edit/' . $theme->id . '" class="btn-action glyphicons pencil btn-success"><i></i></a>';
                echo '<a href="' . base_url() . 'themes/delete/' . $theme->id . '" class="btn-action glyphicons remove_2 btn-danger"><i></i></a>';
                echo '</td>';
                echo '</tr>';
            } 
        }
       /* else
        {
            echo '<tr>';
            echo '<td class="center" colspan="7">There are no themes.  Select Add a New Theme.</td>';
            echo '</tr>';
        }*/
        ?>
    </tbody>
</table>

それがうまくいくことを願っています.datatableはテーブル内のデータを自動的に処理しないためです。

于 2013-08-28T19:41:51.403 に答える