質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

0回答

2152閲覧

Datatablesでデータを追加した後、表示項目外でソート順を決定したい

na-ok

総合スコア0

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2021/08/23 03:05

前提・実現したいこと

jQueryのプラグインであるDataTablesで表を作成しています。
表の特定の列が特定の値の時、表示内容を変更しつつもソートは元の値で行いたいと考えております。
下記例では以下を表現しております。

  • 当該列のデータが2の時、表示は「弐」でソートは「2」で行いたい

発生している問題・エラーメッセージ

元の値でソートすることができません。
下記例であれば、「1」「弐」「3」「4」でソートが行われてしまいます。

該当のソースコード

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>sample</title> 8 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> 9 <link rel="stylesheet" href="https://cdn.datatables.net/1.10.25/css/jquery.dataTables.min.css"> 10</head> 11<body> 12 <button id="add_data">add data</button> 13 <table id="table_id" class="display"> 14 <thead> 15 <tr> 16 <th>Column 1</th> 17 </tr> 18 </thead> 19 <tbody> 20 </tbody> 21 </table> 22 23 <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> 24 <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> 25 <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script> 26 <script src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.min.js"></script> 27 <!-- 下記Javascript --> 28 <script src="./table.js"></script> 29</body> 30</html>

javascript

1/* table.js */ 2$(document).ready( function () { 3 variants_table = $('#table_id').DataTable({ 4 columns: [ 5 { 6 "data": "some_no", 7 "render":function ( data, type, full, meta ) { 8 // dataが特定の値のときに表示形式を変更する処理 9 if(data == 2){ 10 return "弐" 11 } 12 return data; 13 }, 14 "createdCell": function (td, cellData, rowData, row, col) { 15 // 並び順を設定 16 $(td).attr("data-order", rowData["some_no"]); 17 $(td).attr("data-sort", rowData["some_no"]); 18 } 19 } 20 ] 21 }); 22 variants_table.draw() 23 24 // Ajaxで取得したデータを想定 25 addData = [ 26 {"some_no":1}, 27 {"some_no":2}, 28 {"some_no":3}, 29 {"some_no":4}, 30 ] 31 32 // 画面上部のボタン押下でデータを追加し再描画(Ajaxで取得したデータの挿入と再描画を想定) 33 $("#add_data").click(function(){ 34 var dt = $('#table_id').DataTable() 35 dt.clear() 36 $('#table_id').dataTable().fnAddData(addData) 37 dt.order([[ 0, "asc" ]]) 38 dt.draw() 39 }) 40} );

試したこと

createdCellでtdに以下を付与しましたが、並び順は変更できませんでした。

  • data-order
  • data-sort

また、元の値でソートしたのちセルが生成されることを期待し、renderのみにしてみましたが、renderで変更された内容でソートされるような挙動をしております。

補足情報(FW/ツールのバージョンなど)

  • jQuert 3.1.5
  • Datatables 1.10.25

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問