How do you know how many columns you have selected?
How do you know how many columns you have selected?
When I use the following:
$('#mytable').DataTable().columns(':visible')[0].length
I can get the number of selected columns, but is that the right way to do it? Why are they stored in index zero? If I try .length on the columns() function, I always get 1, which is just the single celled array containing the actual results. Is there a .size() or a .count() or something like that? If there isn't something like that, will this short length array ever disappear? Can I trust it from version to version?
This question has an accepted answers - jump to answer
Answers
When you say selected do you mean visible as opposed to using the Select extension?
Long answer:
I'll assume you mean visible as your example indicates. Using
columns()
returns an API instance as described in the API docs. in the docs it says this about the API result set:If you console.log
$('#mytable').DataTable().columns(':visible')
you would see it is an API with an array of items. The first element in the array is the array of visible column indexes. Which is why you need to use[0].length
to access the first API element then to get the length.Short answer:
Yes, your example is one way to get the length. There is a
count()
API that can be used. It would look something like this:$('#mytable').DataTable().columns(':visible').count();
I would expect the API structure to remain the same with Datatables 1.10. This may change with Datatables 2.x - @allan can answer that.
HTH
Kevin
Thank you for your clear answer. I will avoid using the array and instead rely on the count() API method. I supposed I just looked in the wrong place when trying to find the method. Thanks again.