columns defs : combine render function and choose the sort value
columns defs : combine render function and choose the sort value
![MelodyNelson](https://secure.gravatar.com/avatar/621dc705365aa283355fb6b813f72a14/?default=https%3A%2F%2Fvanillicon.com%2F621dc705365aa283355fb6b813f72a14_200.png&rating=g&size=120)
Link to test case:
Debugger code (debug.datatables.net):
Error messages shown:
Description of problem:
Hi,
I'm using 2 methods for columns def depending on the needs.
The simple one for this kind of data :
"dateFin": {
"display": "12/01/2021",
"sort": "2021-01-12",
"annee": 2021,
"moisLong": "Janvier",
"moisCourt": "Jan",
"special": "Jan / 2021"
},
The column def :
{ data: { // signée le
_: 'dateFin',
display: 'dateFin.special',
sort: 'dateFin.sort'
}
},
And sometimes I'm using the renderer for reasons like combining multiple row sources for the data or presentation. But in those cases, I don't how how to define the data to use for sorting.
For exemple I have this 2 data sources, and I want to sort the column width confirmDate.Valeur_date
"confirmNumero": {
"Code_affaire": "BC21-FV008",
"Code_rubrique": "NN",
"Valeur_alpha": "20219426",
"Valeur_date": "0000-00-00",
"Valeur_num": 0,
"num_ordre": 1,
"Groupe": "",
"ID": 855608,
"affaire": {
"__KEY": "BC21-FV008"
},
"rubrique": {
"__KEY": "NN"
},
"Nature": 2,
"libelle": "20219426"
},
"confirmDate": {
"Code_affaire": "BC21-FV008",
"Code_rubrique": "DO",
"Valeur_alpha": "",
"Valeur_date": "2021-01-12",
"Valeur_num": 0,
"num_ordre": 1,
"Groupe": "",
"ID": 855607,
"affaire": {
"__KEY": "BC21-FV008"
},
"rubrique": {
"__KEY": "DO"
},
"Nature": 3,
"libelle": "12/01/2021",
"mois": 1,
"annee": 2021,
"jour": 12,
"semaine": 2
},
How can I change this column def to add the sort and keep the function render ?
I'm sure this basic question has an answer somewhere in the doc but I didn't find it.
{ data: 'confirmDate',
render: function ( data, type, row ) {
return 'n° ' + row['confirmNumero']['libelle'] + '<br>' + data.libelle ;
}
}
PS : I tried this but, as expected, it didn't work
{ data: {
_: 'confirmDate',
display: render: function ( data, type, row ) {
return 'n° ' + row['confirmNumero']['libelle'] + '<br>' + data.libelle ;
},
sort: 'confirmDate.Valeur_date'
}
}
Thank you
This question has an accepted answers - jump to answer
Answers
Use Orthogonal data similar to the Computed Values section. Something like this:
Kevin
Thank you once again Kevin for a five stars answer !![:) :)](https://datatables.net/forums/resources/emoji/smile.png)
It's so easy with the good info/doc