スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

DataTables でカンマがある時のソート方法

前にメモっておいたテーブルの内容をソートしたり、検索してくれるjQueryのプラグインDataTablesで、カンマが混じった数値を数値としてソートする方法。
(通常は文字列としてソートされてしまう)

以下のファイルを作成

jquery.dataTables.numeric-comma.js

/* Note 'unshift' does not work in IE6. A simply array concatenation would. This is used
* to give the custom type top priority
*/
jQuery.fn.dataTableExt.aTypes.unshift(
function ( sData )
{
var sValidChars = "0123456789-,";
var Char;
var bDecimal = false;

/* Check the numeric part */
for ( i=0 ; i<sData.length ; i++ )
{
Char = sData.charAt(i);
if (sValidChars.indexOf(Char) == -1)
{
return null;
}

/* Only allowed one decimal place... */
if ( Char == "," )
{
if ( bDecimal )
{
return null;
}
bDecimal = true;
}
}

return 'numeric-comma';
}
);

jQuery.fn.dataTableExt.oSort['numeric-comma-asc'] = function(a,b) {
var x = (a == "-") ? 0 : a.replace( /,/, "." );
var y = (b == "-") ? 0 : b.replace( /,/, "." );
x = parseFloat( x );
y = parseFloat( y );
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
};

jQuery.fn.dataTableExt.oSort['numeric-comma-desc'] = function(a,b) {
var x = (a == "-") ? 0 : a.replace( /,/, "." );
var y = (b == "-") ? 0 : b.replace( /,/, "." );
x = parseFloat( x );
y = parseFloat( y );
return ((x < y) ? 1 : ((x > y) ? -1 : 0));
};

これは、DataTablesのサイトのplug-insにあったソースをそのままコピペ。

呼び出し側は以下のように変更

$(document).ready(function() {
$('#sortListTable').dataTable( {
"aaSorting": [[ 0, "asc" ]],
"aoColumns": [
null,
null,
]
} );
} );



$(document).ready(function() {
$('#sortListTable').dataTable( {
"aaSorting": [[ 0, "asc" ]],
"aoColumns": [
{ "sType": 'numeric-comma' },
{ "sType": 'numeric-comma' }
]
} );
} );
スポンサーサイト

トラックバック

コメント

コメントを残す

Secret


プロフィール

U2K

Author:U2K
いろいろプログラムに関しての覚え書きをちょくちょくと書いていきます。

オススメ










オススメ

忍者AdMax

u2k on Twitter

最近の記事


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。