2017-08-21 6 views
1

comment mettre la sélection en première ligne après le tri dans le tableau nat, j'utilise SortHeaderLayer pour le tri ..... merci à l'avancecomment mettre la sélection en première ligne après le tri dans la table nat?

SortHeaderLayer<Mapping> sortHeaderLayer =new SortHeaderLayer<Mapping>(columnHeaderLayer, new GlazedListsSortModel<Mapping>(sortedList,columnAccessor,configRegistry, columnHeaderDataLayer), false); 

Merci

Répondre

0

Cela peut être fait en vous inscrivant ILayerListener. La seule chose à garder à l'esprit est que le SortColumnEvent est tiré en premier et ensuite le GlazedListsEventLayer déclenche un RowStructuralRefreshEvent pour déclencher le repeindre. Cela supprimera la sélection lorsque vous n'utilisez pas le RowSelectionModel. Par conséquent, les auditeurs doivent être conçus de manière réactive.

// an ILayerListener that performs a selection after a refresh and 
    // unregisters itself afterwards 
    ILayerListener sortListener = new ILayerListener() { 

     @Override 
     public void handleLayerEvent(ILayerEvent event) { 
      if (event instanceof RowStructuralRefreshEvent) { 
       natTable.doCommand(new SelectRowsCommand(natTable, 
         1, 1, false, false)); 
       natTable.removeLayerListener(this); 
      } 
     } 
    }; 

    // register an ILayerListener that registers the above listener 
    // on a SortColumnEvent 
    natTable.addLayerListener(new ILayerListener() { 

     @Override 
     public void handleLayerEvent(ILayerEvent event) { 
      if (event instanceof SortColumnEvent) { 
       natTable.addLayerListener(sortListener); 
      } 
     } 
    }); 
+0

Merci pour votre réponse ... une chose que je dois savoir .... que comment pouvons-nous placer une ligne sélectionnée dans la première position de la table ... après tri .... – Suraj

+0

Dans ce cas, vous devez changer l'algorithme de tri ou travailler avec RowReorderLayer. Rien à expliquer en somme gratuitement. –