JQuery Datatables de recherche au sein d'entrée et sélectionnez
À l'aide de Jquery Datatables avec des entrées et sélectionne comme indiqué ici: http://datatables.net/examples/api/form.html
ou si j'ai utilisé une colonne personnalisée gestionnaire de rendu pour produire de l'entrée et sélectionne comment puis-je faire le mondial de la table de travail de recherche?
Si l'on considère l'exemple, vous remarquerez que seule la première colonne, la lecture seule, est inclus dans la recherche, que puis-je faire pour y inclure les autres colonnes dans la recherche?
Si vous affichez l'exemple dans le lien dans ma question et le type de Tokyo"," dans le moteur de recherche toutes les lignes sont renvoyées. C'est parce que "Tokyo" est une option dans toutes les listes déroulantes. Je veux uniquement des lignes avec Tokyo sélectionné pour montrer. Si vous tapez "33" vous ne voyez pas de lignes, même si la première ligne a une valeur de "33" dans la première colonne.
Je n'arrive pas à trouver toute la documentation sur la façon de définir ce que la valeur de recherche est pour une cellule donnée dans un datatable.
Vous devez vous connecter pour publier un commentaire.
Il n'est pas très bien documenté. Et il semble fonctionner différemment, ou pas, entre les (sous -) versions. Je pense que les tables de données est conçu pour détecter automatiquement HTML-colonnes, mais pour une raison quelconque, la plupart du temps, il ne marche pas. Le moyen le plus sûr est de créer votre propre recherche-filtre :
Ce sera le retour de 33 sur
<input>
's avec la valeur 33, et Tokyo sur<select>
's où Tokyo est sélectionné. Ensuite, définir le degré de colonnes de typehtml-input
;voir démo basée sur http://datatables.net/examples/api/form.html -> http://jsfiddle.net/a3o3yqkw/
Concernant les données en direct: Le problème, c'est que le type de filtre qu'est appelé une fois. dataTables puis met en cache les valeurs renvoyées donc il a pas besoin de "calculer" l'ensemble des valeurs de plus et plus. Heureusement, dataTables 1.10.x a une fonction intégrée pour
cells
,rows
etpages
appeléinvalide
que les forces de tables de données pour réinitialiser le cache pour les objets sélectionnés.Cependant, face
<input>
s'il y a aussi le problème, que le fait de modifier la valeur n'est pas la modification de lavalue
attribut lui-même. Donc, même si vous appelezinvalidate()
, vous serez toujours à la fin dans le filtrage sur le vieux "codé en dur" de la valeur.Mais j'ai trouvé une solution pour ce. La Force de la
<input>
'svalue
attribut à modifier avec le<input>
's valeur actuelle (la nouvelle valeur) et puis appelinvalidate
:Pour les textareas utilisation
text()
à la place :C'est également le cas lorsque l'on traite avec
<select>
s'. Vous aurez besoin de mettre à jour leselected
attribut de la<option>
's et puisinvalidate()
la cellule ainsi :fourche violon> http://jsfiddle.net/s2gbafuz/ Essayer de changer le contenu des entrées et/ou les listes déroulantes, et à la recherche de nouvelles valeurs ...
$td.find("option").filter("[selected]").removeAttr("selected").end().filter('[value="'+ value +'"]').attr("selected", true);
un autre infos supplémentaires sur si vous vous demandez comment faire pour modifier la fonction de filtre pour attraper plus de cas:$.fn.dataTableExt.ofnSearch['html-input'] = function(value) {if( $(value).filter("select").length ) {return $(value).filter("select").val();}else if( $(value).find("[type='radio']:checked").length) {return $(value).find("[type='radio']:checked").val();} [...]
Cela devrait rechercher l'ensemble de la table au lieu de la colonne correspondante(s).
Meilleure chose à faire ici est de simplement mettre à jour la cellule contenant la nouvelle valeur de l'entrée et de garder la datatable objet de données de synchronisation avec l'INTERFACE d'entrée:
Vous remplacer entrée par Textarea, et ajouter le css ci-dessous. Il fera de votre textarea ressemble à une entrée.
Si le point ici est de rechercher à travers toutes les entrées dans un tableau basé sur des valeurs (et "régulière" de cellules), vous pouvez construire votre propre recherche personnalisée (
$.fn.DataTable.ext.de recherche.push()
):La complète DÉMO de cette approche vous pouvez trouver ci-dessous:
JS:
HTML: