2016-10-21 5 views
2

私はjQuery UIタブを使用します。新しいタブごとにDataTableがあります。ダイアログボックスで選択した行を現在のタブのテーブルに追加したいとします。
私はタブに使用したのと同じ番号のタブにテーブルを持っているので(たとえば、 "tabs-1"にはテーブル "choice1"が含まれます)、すべてをストアするよりも行を追加する必要があるたびにコレクションのテーブル変数。
既に初期化されたDataTableに、変数に格納せずに初期化したときにアクセスできることがわかっている場合は、は不可能です は、私の頭に浮かぶのはキーがタブ名とその値を含む文字列はテーブル変数です。そして、私はそれが最善の方法であるかどうかはわかりません。
は、ここで私は今で試したものです:だからテーブルのIDを使用してDataTables APIにアクセス

var id = '#choice' + $("#tabs ul>li a").eq(tabs.tabs('option', 'active')).attr('href').slice(-1); 
$(id).row.add(dialogTable.rows({ selected: true }).data()).draw(); 

、私は最初の行をコメントし、「#1 choice1は」それはまだエラーTypeError: $(...).row is undefinedを生成しますハードコーディングしていても。

答えて

3

DataTables APIインスタンスではなく、.row()をjQueryテーブルオブジェクトのにコールする必要があります。

.DataTable()を呼び出すと、データテーブルが初期化され、APIインスタンスが返されます。テーブルが既に初期化されている場合は、インスタンスが返されます。

From the docs:

新しいのDataTableのAPIインスタンスは、3つの異なる方法のいずれかで1つまたは複数のテーブルのために得ることができるAPIへのアクセス:

  • $(セレクタ)。データ表();

  • $(セレクタ).dataTable()。api();

  • new $ .fn.dataTable.Api(セレクタ);

それぞれの結果は、セレクタによってそのコンテキスト内で検出されたテーブルを持つDataTables APIオブジェクトのインスタンスです。

これは、あなたがしたい行を取得します。したがって、これは動作するはず

$(id).DataTable().row() 

を:

$(id).DataTable().row.add(dialogTable.rows({ selected: true}).data()).draw(); 
+0

@mekkanizerは、あなたはそれが 'dialogTable.rows'があることをビットいないことを確信していますそのエラーが発生していますか? 'dialogTable'もAPIインスタンスである必要があります。私はそうではないと確信しています – DelightedD0D

+0

@mekkanizerあなたは完全なコードでjsFiddleを作って、テーブルをもっとよく見ることができますか? ? – DelightedD0D

+1

神様、私の愚かさを許して...すべてうまくいけば、ちょうどDataTablesの後に '()'が見逃されました... – mekkanizer

関連する問題