Mise à jour et ordonnancement des numéros dans une liste List
Fermé
polak1982
Messages postés
11
Date d'inscription
dimanche 24 novembre 2013
Statut
Membre
Dernière intervention
6 septembre 2021
-
27 août 2016 à 11:40
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 30 août 2016 à 18:28
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 30 août 2016 à 18:28
A voir également:
- Mise à jour et ordonnancement des numéros dans une liste List
- Liste déroulante excel - Guide
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Liste déroulante en cascade - Guide
3 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
29 août 2016 à 16:43
29 août 2016 à 16:43
Bonjour,
Conceptuellement il n'y a pas de raison qu'un objet possède une information qui dépend d'autres objets auxquels il n'est pas lié.
Si ce rang dépend de l'ensemble des objets de ton tableau, alors c'est au tableau de gérer ces numéros, pas à chacune des lignes alors qu'elles ne savent pas qu'elles sont dans un tableau ni quelles sont les autres lignes.
Donc supprime le numéro de ton objet et affiches le directement dans le tableau (ligne N : numéro N).
Si tu veux plus d'aide il va falloir nous donner le code que tu utilises pour afficher le tableau et supprimer une ligne.
Conceptuellement il n'y a pas de raison qu'un objet possède une information qui dépend d'autres objets auxquels il n'est pas lié.
Si ce rang dépend de l'ensemble des objets de ton tableau, alors c'est au tableau de gérer ces numéros, pas à chacune des lignes alors qu'elles ne savent pas qu'elles sont dans un tableau ni quelles sont les autres lignes.
Donc supprime le numéro de ton objet et affiches le directement dans le tableau (ligne N : numéro N).
Si tu veux plus d'aide il va falloir nous donner le code que tu utilises pour afficher le tableau et supprimer une ligne.
polak1982
Messages postés
11
Date d'inscription
dimanche 24 novembre 2013
Statut
Membre
Dernière intervention
6 septembre 2021
30 août 2016 à 11:55
30 août 2016 à 11:55
Bonjour,
Voici le code que j'utilise pour afficher ma liste :
Puis la suppression :
Je souhaiterai qu'en supprimant la deuxième ligne que les numeros d'ordre soient misent à jour : 1, 2 ,3 et non 1, 3,4
Merci d'avance pour votre aide,
Voici le code que j'utilise pour afficher ma liste :
public List<Colistier> selectAllColistierCandidatList( int nIdCandidat )
{
List<Colistier> colistierList = new ArrayList<Colistier>( );
DAOUtil daoUtil = new DAOUtil( SQL_QUERY_SELECT_ALL_COLISTIERS_CANDIDAT );
daoUtil.setInt( 1, nIdCandidat );
daoUtil.executeQuery( );
while ( daoUtil.next( ) )
{
Colistier colistier = new Colistier( );
int nIndex = 1;
colistier.setIdColistier( daoUtil.getInt( nIndex++ ) );
colistier.setSexeColistier( daoUtil.getString( nIndex++ ) );
colistier.setNomColistier( Utils.stripAccents( daoUtil.getString( nIndex++ ) ) );
colistier.setPrenomColistier( daoUtil.getString( nIndex++ ) );
String strDateNaissanceColistier = daoUtil.getString( nIndex++ );
if( strDateNaissanceColistier != null )
strDateNaissanceColistier = Utils.dateToStringFormat( Utils.strToSqlDateFormat( strDateNaissanceColistier, "yyyy-MM-dd" ), DATE_FORMAT_DEFAULT );
colistier.setDateDeNaissanceColistier( strDateNaissanceColistier );
colistier.setNumeroOrdreColistier( daoUtil.getInt( nIndex++ ) );
colistier.setIdCandidat( daoUtil.getInt( nIndex++ ) );
colistierList.add( colistier );
}
daoUtil.free( );
return colistierList;
}
Puis la suppression :
public void delete( int nKey, Plugin plugin )
{
DAOUtil daoUtil = new DAOUtil( SQL_QUERY_DELETE, plugin );
daoUtil.setInt( 1, nKey );
daoUtil.executeUpdate( );
daoUtil.free( );
}
Je souhaiterai qu'en supprimant la deuxième ligne que les numeros d'ordre soient misent à jour : 1, 2 ,3 et non 1, 3,4
Merci d'avance pour votre aide,
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
30 août 2016 à 13:52
30 août 2016 à 13:52
Le code que tu montres là c'est de l'ajout et suppression en base de données, ce n'est pas ici qu'il faut gérer l'affichage. En base de données, les identifiants devraient être immuables, la même ligne aura toujours le même numéro tout au long de son existence.
C'est au moment de l'affichage (println en console, JTable en Swing, etc) que tu peux éventuellement mettre en place un affichage de numéro de séquence qui se suivent, mais totalement décorrélée de la donnée brute en base de données.
Remarque : si tu manipules des dates, il faut utiliser un type date dans ta base de données, et travailler sur des objets date en Java, mais ne pas faire de multiples conversions de String comme tu le fais pour la date de naissance.
C'est au moment de l'affichage (println en console, JTable en Swing, etc) que tu peux éventuellement mettre en place un affichage de numéro de séquence qui se suivent, mais totalement décorrélée de la donnée brute en base de données.
Remarque : si tu manipules des dates, il faut utiliser un type date dans ta base de données, et travailler sur des objets date en Java, mais ne pas faire de multiples conversions de String comme tu le fais pour la date de naissance.
polak1982
Messages postés
11
Date d'inscription
dimanche 24 novembre 2013
Statut
Membre
Dernière intervention
6 septembre 2021
30 août 2016 à 14:23
30 août 2016 à 14:23
Merci pour des précisions, voici là ou j'utilisa ma liste :
Le code html :
Merci par avance
Candidat _candidat = getCandidat( request );
List<Colistier> listColistiers = ColistierHome.getColistierCandidatList( _candidat.getIdCandidat( ) );
Map<String, Object> model = getPaginatedListModel( request, MARK_COLISTIER_LIST, listColistiers, JSP_MANAGE_COLISTIERS );
model.put( MARK_CANDIDAT, _candidat );
return getPage( PROPERTY_PAGE_TITLE_MANAGE_COLISTIERS, TEMPLATE_MANAGE_COLISTIERS, model );
Le code html :
<tr> <th>#i18n{resultat.manage_colistiers.columnNumeroOrdreColistier}</th> <th>#i18n{resultat.manage_colistiers.columnNomColistier}</th> <th>#i18n{resultat.manage_colistiers.columnPrenomColistier}</th> <th>#i18n{resultat.manage_colistiers.columnDateDeNaissanceColistier}</th> <th>#i18n{resultat.manage_colistiers.columnSexeColistier}</th> <th>#i18n{portal.util.labelActions}</th> </tr> <@tableHeadBodySeparator /> <tr> <td>1</td> <td>${candidat.nomCandidat}</td> <td>${candidat.prenomCandidat}</td> <td>${candidat.dateNaissanceCandidat!''}</td> <td>${candidat.sexeCandidat}</td> </tr> <#list colistier_list as colistier > <tr> <#if (colistier.numeroOrdreColistier > 1)> <td>${colistier.numeroOrdreColistier}</td> <td>${colistier.nomColistier}</td> <td>${colistier.prenomColistier}</td> <td>${colistier.dateDeNaissanceColistier!''}</td> <td>${colistier.sexeColistier}</td> </#if>
Merci par avance
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
30 août 2016 à 18:28
30 août 2016 à 18:28
Tu peux éventuellement conserver l'identifiant unique (enregistré en base de données) et ajouter un deuxième champs dans ton objet (le numéro d'ordre), mais qui ne serait pas persisté car il ne représente pas une donnée de l'objet, mais plutôt un champ technique lié à cette exécution particulière du code.
Exemple :
Exemple :
public class Colistier { private transient int numeroOrdre = 0; public void setNumeroOrdre(int num) { numeroOrdre = num; } public int getNumeroOrdre() { return numeroOrdre; } }
for (int numero = 1; daoUtil.next(); numero++) { Colistier colistier = new Colistier(); colistier.setNumeroOrdre(numero); colistier.setId(daoUtil.getInt(1)); // ...
<td>${colistier.numeroOrdre}</td> <td>${colistier.id}</td>