0

次のような単一の文字列の値に基づいて、データテーブルを使用してテーブルを並べ替える必要があります。

Number 23624 of 2010
Number 14502 of 1942
Number 10530 of 1942
Number 56020 of 2010
Number 06205 of 1997

この単一の文字列を分割して、XXXXX と YYYY の 2 つの数値を取得しました。

私がする必要があるのは、YYYYが同じ場合はXXXXXでソートし、最新のYYYYを一番上にすることです。例えば:

Number 23624 of 2010
Number 56020 of 2010
Number 06205 of 1997
Number 10530 of 1942
Number 14502 of 1942

誰でもアドバイスできますか?DataTables でoSort関数を使用しています。

編集:要求に応じて、ここにコードがあります:

    jQuery.fn.dataTableExt.oSort['its-no-asc']  = function(a,b) {

    if(!j(a).is("a")) {
        x = a;
    } else {
        x = j(a).text();
}

if(!j(b).is("a")) {
    y = b;
} else {
    y = j(b).text();
} 

x_array = x.split(" ");
y_array = y.split(" ");
x_numbers_array = [];
y_numbers_array = [];

j.each(x_array, function(key, value) {
    orig_value = value;
    value = value.replace("Number", "");

    value = parseInt(value);
    if(j.isNumeric(value)) {
        x_numbers_array.push(value);
    }

    });

j.each(y_array, function(key, value) {
    orig_value = value;
    value = value.replace("Number", "");

    value = parseInt(value);
    if(j.isNumeric(value)) {
        y_numbers_array.push(value);
    }

});

y_no = y_numbers_array[0];
y_year = y_numbers_array[1];


x_no = x_numbers_array[0];
x_year = x_numbers_array[1];

//console.log(x_year);

if(x_year == y_year) {
    if(x_year == y_year && x_no < y_no) {
        return -1;
    } else if (x_year == y_year && x_no > y_no) {
        return 1;
    } else if (x_year == y_year) {
        return 0;
    }
} else if(x_year < y_year) {
    if(x_year < y_year && x_no < y_no) {
        return -1;
    } else if (x_year < y_year && x_no > y_no) {
        return 1;
    } else if (x_year < y_year) {
        return 0;
    }
} else if(x_year > y_year) {
    if(x_year > y_year && x_no < y_no) {
        return -1;
    } else if (x_year > y_year && x_no > y_no) {
        return 1;
    } else {
        return 0;
    }
    }

};

jQuery.fn.dataTableExt.oSort['its-no-desc']  = function(a,b) {
    //

};

j(document).ready(function() {
j('.treaty-table').dataTable({
        "sPaginationType": "full_numbers",
        "aoColumns": [
            { "sType": "its-no" },
            null,
            null,
            null,
            null
        ]
    });

});
4

1 に答える 1

0

aaSortingこれを0最初の列と12番目の列に追加し、asc昇順です。

続きを読むhttp://www.datatables.net/release-datatables/examples/basic_init/multi_col_sort.html

/* Define two custom functions (asc and desc) for string sorting */
jQuery.fn.dataTableExt.oSort['string-case-asc']  = function(x,y) {
    return ((x < y) ? -1 : ((x > y) ?  1 : 0));
};

jQuery.fn.dataTableExt.oSort['string-case-desc'] = function(x,y) {
    return ((x < y) ?  1 : ((x > y) ? -1 : 0));
};

$('.treaty-table').dataTable({
    "aaSorting": [ [0,'asc'], [1,'asc'] ],
    "sPaginationType": "full_numbers",
    "aoColumns": [
        { "sType": "its-no" },
        null,
        null,
        null,
        null
    ]
    });
});
于 2013-07-03T08:23:20.803 に答える