行データの取得中にデータテーブルの未定義エラーが発生しました

Aker666

Datatables行のデータを取得するときにエラーが発生し、なぜそれが発生しているのか理解できません。

ドキュメントを読んで、行データを取得するのは次のように簡単です。

var table = $('#example').DataTable();

$('#example tbody').on( 'click', 'tr', function () {
    console.log( table.row( this ).data() );
} );

だから、私はそれがサーバー側に記入されているJinja2テンプレートを持っています(Python 3ではフラスコを使用しています):

<table id="table" class="dataTable display responsive nowrap" cellspacing="0" width="100%">
   <thead>
      .....
   </thead>
   <tbody>
      .....
   </tbody>
</table>

そして、Datatableを次のように初期化します

function createDatatable() {
    $('#table').DataTable({
        "select": "single",
        "order": [[2, "asc"]],
        "language": {.....}
        }
    });
}

そして、いくつかのイベントを添付します。

function attachEvents() {
   $('#table tbody').on('click', 'td.tdCredits', function () {
        var table = $('#table').DataTable();
        var rowId = table.row(this).data()[0];
    });
    .....
}

それから私はします:

$(document).ready(function() {
    createDatatable();
    attachEvents();
});

したがって、このコードでクリックした行のデータを取得したい場合(選択されているかどうかに関係なく)、コンソールでエラーが発生します。

TypeError: table.row(...).data(...) is undefined

私が間違っているのは何ですか?レンダリングされたテーブルを確認できるため、ページネーションボタンを使用して、列を並べ替えることもできます。

$(document).ready(function() {
	createDatatable();
	attachEvents();
});

function createDatatable() {
    $('#table').DataTable({
        "select": "single",
        "order": [[2, "asc"]]
    });
}

function attachEvents() {
   $('#table tbody').on('click', 'td.tdCredits', function () {
        var table = $('#table').DataTable();
        var rowData = table.row(this).data();
        console.log('Clicked row data: ' + rowData);
        var rowId = table.row(this).id();
        console.log('Clicked row id: ' + rowId);
        // Other code
    });
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
<link href="https://cdn.datatables.net/1.10.20/css/jquery.dataTables.min.css" rel="stylesheet"/>

<table id="table" class="dataTable display responsive nowrap" cellspacing="0" width="100%">
	<thead>
		<tr>
			<th style="display: none;"></th>
			<th class="text-center">Header 1</th>
			<th class="text-center">Header 2</th>
			<th class="text-center">Header 3</th>
			<th class="text-center">Header 4</th>
			<th class="text-center">Header 5</th>
			<th class="text-center">Header 6</th>
			<th class="text-center">Header 7</th>
		</tr>
	</thead>
	<tbody>
		<tr id="someId" class="filter">
			<td style="display: none;"></td>
			<td class="text-center">Cell 1</td>
			<td class="text-center">Cell 2</td>
			<td class="text-center">Cell 3</td>
			<td class="text-center">Cell 4</td>
			<td class="text-center tdCredits">Click here</td>
			<td class="text-center">Cell 6</td>
			<td class="text-center">Cell 7</td>
		</tr>
	</tbody>
</table>

Aker666

わかりました。問題を解決するトリックを見つけました。「。data()」にアクセスする必要はありません。

私が抱えていた問題は、各行のいくつかのフィールドを編集できるためです。そのため、行のフィールドの1つを初めてクリックすると、その行が選択されて使用できるようになります。

table.row({ selected: true }).index();

ただし、他のフィールドをもう一度クリックすると、行の選択が解除され、フィルターselected:trueが機能しなくなります。

フィドルを実行すると、Datatablesがで指定されたIDを使用していることがわかりました

<tr id="someId" ..>

内部値の代わりに。そこで、ID値をメソッドに渡し、行を強制的に選択します。

table.row('#' + id).select();

そして、私は使用することができます:

var rowIndex = table.row({ selected: true }).index();

そして、最初に表示されている行のフィールドではなく、適切なフィールドを更新します。

table.cell({row:rowIndex, column:columnIndex}).data(newValue).draw();

よろしく!

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

データベースからのテーブルの表示中にエラーが発生しました

分類Dev

gvNIX:データテーブルのインストール中にエラーが発生しました

分類Dev

Google Cloudのbigqueryテーブルにデータを挿入中にエラーが発生しましたか?

分類Dev

Excelデータテーブルへのアクセス中にエラーが発生しました

分類Dev

Cloud Firestoreデータベースからのデータの取得中にエラーが発生しました

分類Dev

データベーステーブルへのデータの挿入中にエラーが発生しました

分類Dev

ユーザー定義のデータ型の作成中にエラーが発生しました

分類Dev

pandasデータフレームからIBMDB2テーブルへのデータ転送中にエラーが発生しました

分類Dev

XML データをハイブ テーブルにロード中にエラーが発生しました

分類Dev

KendoUIデータセットからのデータ取得中にエラーが発生しました

分類Dev

カスタムライブラリ「未定義の参照」の使用中にエラーが発生しました[AVR]

分類Dev

データベースのテーブルを取得しようとしたときにPDOエラーが発生しました

分類Dev

JSONオブジェクトからのデータ取得中にエラーが発生しました

分類Dev

csvデータをHiveテーブルにロード中にエラーが発生しました

分類Dev

ハイブのパーティション化された外部テーブルにデータを挿入中にエラーが発生しました

分類Dev

BigQueryテーブルからDataprocクラスターへのデータの読み込み中にエラーが発生しました

分類Dev

MySQLを使用してテーブルにデータを挿入中にエラーが発生しました

分類Dev

X-Cart4.6データベース内の新しいテーブルへのデータの送信中にエラーが発生しました

分類Dev

テキストボックスからSQLサーバーテーブルへのデータの保存中にエラーが発生しました

分類Dev

メタデータの生成中にエラーが発生しました

分類Dev

データベースインスタンスの取得中にGoogleFirestoreエラーが発生しました

分類Dev

sqliteデータベースの作成中にエラーが発生しました 'テーブルを作成できませんでした' IOS7

分類Dev

Laravel5:関連するデータベーステーブルへのデータの書き込み中にQueryExceptionが発生しました。エラー:「子行を追加または更新できません:外部キー制約が失敗します」

分類Dev

Ajax データを HTML テーブルに出力中にエラーが発生しました

分類Dev

ReactMarkdownエディターの使用中にエラーが発生しました

分類Dev

テーブルビューデータソースへの自己の割り当て中にエラーが発生しました

分類Dev

2つのデータベースを持つテーブルのレコードを削除中にエラーが発生しました

分類Dev

Rのデータの解析中にエラーが発生しました

分類Dev

FirebirdSQLを使用したデータベーステーブルの作成中にエラーが発生しました

Related 関連記事

  1. 1

    データベースからのテーブルの表示中にエラーが発生しました

  2. 2

    gvNIX:データテーブルのインストール中にエラーが発生しました

  3. 3

    Google Cloudのbigqueryテーブルにデータを挿入中にエラーが発生しましたか?

  4. 4

    Excelデータテーブルへのアクセス中にエラーが発生しました

  5. 5

    Cloud Firestoreデータベースからのデータの取得中にエラーが発生しました

  6. 6

    データベーステーブルへのデータの挿入中にエラーが発生しました

  7. 7

    ユーザー定義のデータ型の作成中にエラーが発生しました

  8. 8

    pandasデータフレームからIBMDB2テーブルへのデータ転送中にエラーが発生しました

  9. 9

    XML データをハイブ テーブルにロード中にエラーが発生しました

  10. 10

    KendoUIデータセットからのデータ取得中にエラーが発生しました

  11. 11

    カスタムライブラリ「未定義の参照」の使用中にエラーが発生しました[AVR]

  12. 12

    データベースのテーブルを取得しようとしたときにPDOエラーが発生しました

  13. 13

    JSONオブジェクトからのデータ取得中にエラーが発生しました

  14. 14

    csvデータをHiveテーブルにロード中にエラーが発生しました

  15. 15

    ハイブのパーティション化された外部テーブルにデータを挿入中にエラーが発生しました

  16. 16

    BigQueryテーブルからDataprocクラスターへのデータの読み込み中にエラーが発生しました

  17. 17

    MySQLを使用してテーブルにデータを挿入中にエラーが発生しました

  18. 18

    X-Cart4.6データベース内の新しいテーブルへのデータの送信中にエラーが発生しました

  19. 19

    テキストボックスからSQLサーバーテーブルへのデータの保存中にエラーが発生しました

  20. 20

    メタデータの生成中にエラーが発生しました

  21. 21

    データベースインスタンスの取得中にGoogleFirestoreエラーが発生しました

  22. 22

    sqliteデータベースの作成中にエラーが発生しました 'テーブルを作成できませんでした' IOS7

  23. 23

    Laravel5:関連するデータベーステーブルへのデータの書き込み中にQueryExceptionが発生しました。エラー:「子行を追加または更新できません:外部キー制約が失敗します」

  24. 24

    Ajax データを HTML テーブルに出力中にエラーが発生しました

  25. 25

    ReactMarkdownエディターの使用中にエラーが発生しました

  26. 26

    テーブルビューデータソースへの自己の割り当て中にエラーが発生しました

  27. 27

    2つのデータベースを持つテーブルのレコードを削除中にエラーが発生しました

  28. 28

    Rのデータの解析中にエラーが発生しました

  29. 29

    FirebirdSQLを使用したデータベーステーブルの作成中にエラーが発生しました

ホットタグ

アーカイブ