2013-07-02 21 views
0

我需要使用基于单一字符串的值,看起来像这些数据表我的表进行排序与​​数据表排序:由2个值

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

我已经分手这一个绳子,让我有2个数值XXXXX和YYYY。

我需要做的是按照XXXXX排序,如果YYYY是一样的,并且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 
     ] 
    }); 

}); 
+0

代码添加的要求 - 我们对此深感抱歉! – user2543440

回答

0

添加此aaSorting其中0是第一列和1是第二列,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 
    ] 
    }); 
});