2013-01-24 4 views
1

J'ai un Primefaces picklist, et je veux être capable de cliquer sur la liste des sources, ou sélectionner un des éléments dans la liste source, entrer un caractère, dire 'R' et avoir ma liste de sélection contrôle navigué à ce point dans ma liste de sélection où ma liste de 'R commence. Essentiellement, je voudrais rechercher la liste de sélection par lettre/caractère. J'utilise Primefaces version 3.3.1. Quelqu'un peut-il me faire savoir si cela est possible, et si oui, comment je peux y arriver? Merci d'avance.comment rechercher une liste de sélection primefaces

Répondre

0

Vous pouvez mettre à jour la liste de sélection via un actionListener dans votre Backing Bean, quelque chose comme ça:

public class PickListFilter { 

    private List<String> sourceList; //Getter, Setter 
    private List<String> targetList; //Getter, Setter 

    private String filterChar; //Getter, Setter 
    //Init Lists 

    public void filterList() { 

     filterChar = FacesContext.getCurrentInstance().getExternalContext(). 
         getRequestParameterMap().get("filterChar"); 


     List<String> filteredList = new ArrayList<String>(); 
     for (String currentString : targetList) { 
      if (currentString.startsWith(letter)) filteredList.add(currentString); 
     } 
     targetList = filteredList; 
    }  
} 

Pour ce feu ActionListener, vous pouvez utiliser l'un RemoteCommand. Cette RemoteCommand sera déclenchée par un petit script jQuery, qui écoute les frappes.

<p:remoteCommand name="filterList" update="myPickList" action="#{pickListFilter.filterList}"> 
</p:remoteCommand> 

Le script jQuery devrait être quelque chose comme ça:

<script> 
jQuery("#picklist").keypress(function(e) { 
    command([{name:'filterChar',value: e.keyCode}]); //Save key to backing bean, TODO: Convert KeyCode to Char 
    filterList(); 
}); 
</script> 

C'est conceptuel ce qui doit être fait. Ceci est juste une solution possible. J'espère que cela vous aide.

Questions connexes