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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

0回答

1776閲覧

DataTablesとRowsGroupを用いたテーブルにおいて、ソートがうまくいかない

s_tamura

総合スコア13

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2019/04/24 09:17

編集2019/04/25 10:18

前提・実現したいこと

DataTablesとそのプラグインRowsGroupを用いてテーブルを作成していますが、一部のカラムでソート機能が思い通りに動きません。

該当のソースコード

HTML

1<!DOCTYPE html> 2<html> 3 <head> 4 <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> 5 6 <link href="//datatables.net/download/build/nightly/jquery.dataTables.css" rel="stylesheet" type="text/css" /> 7 <script src="//datatables.net/download/build/nightly/jquery.dataTables.js"></script> 8 <script src="//cdn.rawgit.com/ashl1/datatables-rowsgroup/v1.0.0/dataTables.rowsGroup.js"></script> 9 10 <meta charset=utf-8 /> 11 <title>DataTables - JS Bin</title> 12 </head> 13 <body> 14 <div class="container"> 15 <table id="example" class="display" width="100%"> 16 </table> 17 </div> 18 </body> 19</html>

JavaScript

1$(document).ready( function () { 2 var data = [ 3 4 ['1', 'Group3', 'Element1'], 5 ['1', 'Group3', 'Element2'], 6 ['2', 'Group2', 'Element1'], 7 ['2', 'Group2', 'Element2'], 8 ['3', 'Group1', 'Element1'], 9 ['3', 'Group1', 'Element2'], 10 11 ]; 12 var table = $('#example').DataTable({ 13 columns: [ 14 { 15 title: 'No', 16 }, 17 { 18 title: 'Group name', 19 }, 20 { 21 title: 'Element', 22 }, 23 24 ], 25 data: data, 26 rowsGroup: [0,1], 27 }); 28} ); 29

実行結果

Noカラムではソートできますが、Group nameカラムではソートできません。
Group nameカラムでもソートがしたいです。

Elementはグループの中だけでソートしていますが、こちらについてはこの動きでかまいません。

試したこと

Elementがグループの中だけでソートされていることに着目し、先頭カラムにダミー行を設置して全体を一つのグループにしてみましたが、動作は変わりませんでした。(Noカラムソート可、Group nameソート不可)

JavaScript

1$(document).ready( function () { 2 var data = [ 3 4 ['', '1', 'Group3', 'Element1'], 5 ['', '1', 'Group3', 'Element2'], 6 ['', '2', 'Group2', 'Element1'], 7 ['', '2', 'Group2', 'Element2'], 8 ['', '3', 'Group1', 'Element1'], 9 ['', '3', 'Group1', 'Element2'], 10 11 ]; 12 var table = $('#example').DataTable({ 13 columns: [ 14 { 15 title: 'Dammy', 16 }, 17 { 18 title: 'No', 19 }, 20 { 21 title: 'Group name', 22 }, 23 { 24 title: 'Element', 25 }, 26 27 ], 28 data: data, 29 rowsGroup: [0,1,2], 30 }); 31} );

サンプル

現状はこちらです。
https://jsfiddle.net/489sur7p/

求めているのはこんなイメージです(tablesorterで作成)
tablesorter使えよ、って話になるかもしれませんが・・・
https://jsfiddle.net/8op7qj5b/

NoカラムでもGroupカラムでも並べ替えができるようにしたいです。

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

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

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

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

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

x_x

2019/04/25 09:33

今のデータでは、[0,1,2]の0のソートで1も完了してしまうので変わったように見えないというだけではないでしょうか? 以下のデータで試してみればわかるかと思います。 var data = [ ['1', 'Group3', 'Element1'], ['1', 'Group3', 'Element2'], ['1', 'Group2', 'Element1'], ['2', 'Group2', 'Element2'], ['2', 'Group1', 'Element1'], ['3', 'Group1', 'Element2'] ];
s_tamura

2019/04/25 09:59 編集

試してみましたが、結果は変わりませんでした。 「No」のカラムでしか、ソートができません。
x_x

2019/04/25 11:52

そうなるとわたしの見ているものと違うようですね
s_tamura

2019/04/25 12:29

そうなんですね。環境によるものですかね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問