0

jquery dataTable プラグインでテーブルを使用しています。関数を使用するfnAddDataと、テーブルが空の場合を除いて機能します。次に、次のエラーが表示されます。

未定義のプロパティ 'className' を読み取れません

これが私のデータを追加する方法です:

$("#table-1").dataTable().fnAddData([
            data[0],
            data[1],
            data[2],
            data[3],
            data[4],
            data[5],
            data[6],
            data[7],
            data[8],
            ]);

また、fnDeleteRow にも同じ問題があり、次のエラー メッセージが表示されます。

未定義のプロパティ 'nTr' を読み取ることができません

の使い方は次fnDeleteRowのとおりです。テーブルが空でない場合は問題ありません...

$("#table-1").dataTable().fnDeleteRow(tr)

ここで、tr はセレクターです。

何か不足していますか?

最後の行が 1 つある HTML タブを次に示します。

<table id="table-1" class="table table-hover table-nomargin table-colored-header        dataTable" aria-describedby="table-1_info">
<thead>
<tr role="row">
<th class="sorting" role="columnheader" tabindex="0" aria-controls="table-1" rowspan="1" colspan="1">Pays</th>
</tr>
</thead>
<tbody role="alert" aria-live="polite" aria-relevant="all">
<tr class="odd">
<td class=" sorting_1">
<div id="address23name">test</div>
</td></tr></tbody></table>

そして、これが私のJSです

$("#deleteAddressButton").click(function(){
    var id = $("#deleteAddressId").val();
    $.post("/Contacts/deleteAddress",
            {data: id}, function(data) {
          var id = $.parseJSON(data);
          var tr = $("tr:has(td:has(div:contains(\"address\" + id + \"Name\")))");
          $("#table-1").dataTable().fnDeleteRow(tr)
        });
})
4

2 に答える 2

0

これは、空のテーブルに行を追加できる単純な jsfiddle です: http://jsfiddle.net/7UZGM/

では、あなたのテーブルの違いは何ですか?「空」と言うとき、まだ thead/tr/th セクションと空の tbody セクションがありますか? これらは、データテーブルが正しく機能するために必要です。

$('#dt').dataTable();

$('#btn').on('click',function() { addData(); });

function addData()
{
    $("#dt").dataTable().fnAddData([
            "col 1", "col 2", "col 3"]);
}
于 2013-11-07T18:52:36.193 に答える
0

jQuery は、DataTables が好む方法でデータにアクセスすることを許可しません。必要なノードを与えるには、おそらくjQuery オブジェクトの最後に[0] または .get(0) を適用する必要があります。これは実際に jQuery が返すオブジェクト (オブジェクト) であり、通常は、快適に作業できるものです。

DataTables にはノードが必要です。

開発者がさまざまな状況でデータにアクセスする方法についてヒントを提供していることを示すいくつかのリンクを次に示しますが、2 番目のリンクで同じエラーが発生しています: ここここ

この話の教訓は、DataTables がテーブル「ノード」を想定している場合、それが配置されている余分な jQuery コンテナーを削除するために、追加のフットワークを行う必要があるということです。

したがって、コードは次のようになり、エラー状態を処理する必要があると思います。それ以外の場合は、DataTables.net でエラーと関数名を検索してください。そのフォーラムは非常に活発で役に立ちます。

var tr = $("tr:has(td:has(div:contains(\"address\" + id + \"Name\")))");
$("#table-1").dataTable().fnDeleteRow(tr[0])

また

var tr = $("tr:has(td:has(div:contains(\"address\" + id + \"Name\")))");
$("#table-1").dataTable().fnDeleteRow(tr.get(0))

またはもちろん、長い$("tr:has...)ステートメントの最後に追加します。

オプション 2:

于 2013-11-08T15:49:18.180 に答える