Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2034 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Permettre une sélection vide dans un combobox databound

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Permettre une sélection vide dans un combobox databound

n°1741964
cosmoschtr​oumpf
dawa powered
Posté le 05-06-2008 à 14:50:05  profilanswer
 

Hello
 
Je suis nouveau dans la prog .net "applications de bureau" (mais j'ai de l'expérience en asp.net).
J'ai un combobox databound (avec des éléments qui viennent de la BDD), et je veux permettre "aucune sélection".
J'avais pensé à bêtement faire un Items.Add("" ) mais ça n'est pas permis avec les combobox databound (ce qui est stupide mais passons).
La seule solution que j'aie trouvé en cherchant sur le net, c'est soit de remplir mon contrôle à la main (mais dans ce cas je n'ai pas trouvé comment séparer l'affichage et la valeur, pour récupérer l'id de l'élément), soit de faire un custom control (mais si je pouvais éviter ça serait pas plus mal).
 
Donc voilà, est-ce qu'il n'y aurait pas un moyen simple pour faire cette opération toute bête ? (qui se fait en 3 clics en asp.net, ça m'étonne que ça soit pas possible en .net-pas-asp...)


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
mood
Publicité
Posté le 05-06-2008 à 14:50:05  profilanswer
 

n°1741969
___alt
Posté le 05-06-2008 à 14:54:29  profilanswer
 

Tu ne peux pas modifier la requête de BDD ? Avec un UNION tu peux ramener une ligne "vide" qui peut te servir d'élément neutre pour la sélection. Sinon y'a pas d'option sur ce composant ?


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°1741996
cosmoschtr​oumpf
dawa powered
Posté le 05-06-2008 à 15:22:32  profilanswer
 

Ouais j'ai pensé aussi à ajouter une ligne vide à ma requête, mais je préfèrerais éviter si possible.
J'ai regardé toutes les options, j'ai rien trouvé qui corresponde à mon besoin.


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1742009
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-06-2008 à 15:34:09  profilanswer
 

les combobox avec une DataSource, c'est le mal. vaut mieux remplir les items à la main, ça coute pas plus cher et ça permet une plus grande liberté d'action :

Code :
  1. comboSchtroumpf.Items.Add("No selection" );
  2. sql = @"SELECT DISTINCT truc FROM base";
  3. command.CommandText = sql;
  4. reader = command.ExecuteReader();
  5. while (reader.Read())
  6.    comboSchtroumpf.Items.Add(reader["truc"]);
  7. reader.Close();



---------------
J'ai un string dans l'array (Paris Hilton)
n°1742012
___alt
Posté le 05-06-2008 à 15:36:36  profilanswer
 

Chez Harkonnen, ça ne coûte pas plus cher de bien coder [:vague nocturne]


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°1742040
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-06-2008 à 15:53:30  profilanswer
 

Tu crois qu'il se passe quoi quand tu affectes une Datasource au Combobox ? Qu'il se remplit par l'opération du St Esprit ? Y'aura forcément un parcours des données à faire. Dés lors, je ne vois pas en quoi c'est mal de le faire soi même, et ainsi de garder le controle sur le contenu du combobox plutot que de faire confiance au designer et de se priver de ce genre d'opérations. Comme dit Petzold, il ne faut jamais laisser passer l'occasion de bypasser le designer.
Quant à ton idée de faire une UNION, permet moi de te dire que c'est particulièrement crade de faire ce genre d'opération tout ça pour rajouter une malheureuse ligne à un combobox. Les données, ce sont les données, on n'a pas à s'en servir pour faire ce genre de trick surtout quand une autre solution existe et sémantiquement bien plus juste


---------------
J'ai un string dans l'array (Paris Hilton)
n°1742045
___alt
Posté le 05-06-2008 à 15:57:27  profilanswer
 

Mais t'es complètement demeuré mon pauvre [:mlc]
Faut te faire soigner, prendre des cachets ou prendre des vacances. T'as un problème naturel d'agressivité avec les gens ou t'as tes règles ?
 
Je fais un jeu de mots idiot mais bon enfant calqué sur le slogan de la pub flunch, je fous ce smiley parce que j'ai la flemme de chercher un smiley Aimé Jaquet et tu pètes le string.
 
Faut que t'arrêtes deux minutes hein [:kiki]


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°1742055
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-06-2008 à 16:03:19  profilanswer
 

___alt a écrit :

Mais t'es complètement demeuré mon pauvre [:mlc]
Faut te faire soigner, prendre des cachets ou prendre des vacances. T'as un problème naturel d'agressivité avec les gens ou t'as tes règles ?
 
Je fais un jeu de mots idiot mais bon enfant calqué sur le slogan de la pub flunch, je fous ce smiley parce que j'ai la flemme de chercher un smiley Aimé Jaquet et tu pètes le string.
 
Faut que t'arrêtes deux minutes hein [:kiki]


désolé d'avoir pris ton message sur le ton de l'agressivité, mais moi j'ai compris que tu sous entendais que ma solution était pourrie, stout :spamafote:
sorry :jap:


---------------
J'ai un string dans l'array (Paris Hilton)
n°1742058
___alt
Posté le 05-06-2008 à 16:04:31  profilanswer
 

Ah bah non pour le coup :o
Ca m'apprendra à faire des blagues sur des topics sérieux :o


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°1742064
cosmoschtr​oumpf
dawa powered
Posté le 05-06-2008 à 16:09:58  profilanswer
 

Harkonnen a écrit :

les combobox avec une DataSource, c'est le mal. vaut mieux remplir les items à la main, ça coute pas plus cher et ça permet une plus grande liberté d'action :

Code :
  1. comboSchtroumpf.Items.Add("No selection" );
  2. sql = @"SELECT DISTINCT truc FROM base";
  3. command.CommandText = sql;
  4. reader = command.ExecuteReader();
  5. while (reader.Read())
  6.    comboSchtroumpf.Items.Add(reader["truc"]);
  7. reader.Close();



 
ok, mais dans ce cas, comment je fais pour récupérer l'id ?
en fait j'ai des réunions de commissions, et mon combobox liste les commissions, mais il est possible qu'une réunion ne se passe dans aucune commission.
 
En asp.net, j'ai l'habitude d'avoir un dropdown composé d'items qui ont une valeur et un texte, et après je récupère la valeur.
En .net-pas-asp, là j'étais content ça faisait pareil, sauf que si j'utilise ta méthode, j'ajoute juste le texte, pas la valeur ; dans ce cas, je fais comment pour récupérer la valeur ?


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
mood
Publicité
Posté le 05-06-2008 à 16:09:58  profilanswer
 

n°1742066
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-06-2008 à 16:10:27  profilanswer
 

non non c'est ma faute, j'ai qu'à regarder la télé plus souvent, je connaitrais la pub flunch :o


---------------
J'ai un string dans l'array (Paris Hilton)
n°1742071
cosmoschtr​oumpf
dawa powered
Posté le 05-06-2008 à 16:14:54  profilanswer
 

et arrêtez de vous fighter sur mon topic ou j'appelle la modération [:ooinverse]


Message édité par cosmoschtroumpf le 05-06-2008 à 16:15:06

---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1742085
___alt
Posté le 05-06-2008 à 16:31:24  profilanswer
 

[:zytrasnif][:zytrasnif][:zytrasnif]
[:zytrasnif][:zytrasnif][:zytrasnif]


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°1742094
cosmoschtr​oumpf
dawa powered
Posté le 05-06-2008 à 16:39:30  profilanswer
 

cosmoschtroumpf a écrit :

ok, mais dans ce cas, comment je fais pour récupérer l'id ?


REPONDEZ A LA QUESTION §§§ /FOU/


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1742113
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-06-2008 à 17:05:14  profilanswer
 

cosmoschtroumpf a écrit :


En .net-pas-asp, là j'étais content ça faisait pareil, sauf que si j'utilise ta méthode, j'ajoute juste le texte, pas la valeur ; dans ce cas, je fais comment pour récupérer la valeur ?


poste voir une capture d'écran d'un combo ASP stp, je les connais pas et je sais pas la gueule qu'ils ont :o


---------------
J'ai un string dans l'array (Paris Hilton)
n°1742123
kazzz
Posté le 05-06-2008 à 17:13:55  profilanswer
 

cosmoschtroumpf a écrit :


REPONDEZ A LA QUESTION §§§ /FOU/


 
bah c des object dans items donc tu mets ce que tu veux dedans et tu cast le selecteditem comme il faut, sachant que lui il affiche le ToString()

n°1742141
cosmoschtr​oumpf
dawa powered
Posté le 05-06-2008 à 17:24:30  profilanswer
 

<asp:DropDownList ID="DropDownListDepartement" runat="server" AppendDataBoundItems="True" DataSourceID="SqlDepartement" DataTextField="departement_num" DataValueField="departement_id">
    <asp:ListItem Text="blabla" Value="0"></asp:ListItem>
</asp:DropDownList>
 
Ca fait un dropdown (un <select /> en html) avec les éléments ajoutés à la main suivis des élements de la requête, et après j'ai juste à accéder au SelectedValue pour avoir l'identifiant de l'élément sélectionné.


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1742143
cosmoschtr​oumpf
dawa powered
Posté le 05-06-2008 à 17:27:18  profilanswer
 

kazzz a écrit :

bah c des object dans items donc tu mets ce que tu veux dedans


ok

 
kazzz a écrit :

et tu cast le selecteditem comme il faut, sachant que lui il affiche le ToString()


je fais une classe pour mon élément, et je remplace la méthode tostring pour renvoyer la donnée que je veux, c'est ça ?

 

J'ai pas l'habitude de ce genre de prog, en asp.net c'est toujours du texte, c'est vachement différent :D


Message édité par cosmoschtroumpf le 05-06-2008 à 17:27:49

---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1742151
kazzz
Posté le 05-06-2008 à 17:38:23  profilanswer
 

ouai un truc comme ça et tu recuperes le selecteditem (selectedvalue et selectedtext ça reste a null)
 

Code :
  1. public class ComboBoxItem
  2.     {
  3.         private int _id;
  4.         public int Id
  5.         {
  6.             get { return _id; }
  7.             set { _id = value; }
  8.         }
  9.         private string _text;
  10.         public string Text
  11.         {
  12.             get { return _text; }
  13.             set { _text = value; }
  14.         }
  15.         public ComboBoxItem(int id, string txt)
  16.         {
  17.             Id = id;
  18.             Text = txt;
  19.         }
  20.         public override string ToString()
  21.         {
  22.             return Text;
  23.         }
  24.     }

n°1742178
cosmoschtr​oumpf
dawa powered
Posté le 05-06-2008 à 18:31:40  profilanswer
 

kazzz a écrit :

ouai un truc comme ça et tu recuperes le selecteditem (selectedvalue et selectedtext ça reste a null)


putain et ça compile et tout en plus [:dawao] (pas encore implémenté mais je ne doute pas que ça marchera aussi [:dawao])
 
merci [:romf]


---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1742427
cosmoschtr​oumpf
dawa powered
Posté le 06-06-2008 à 11:51:00  profilanswer
 

bon et maintenant, si je veux sélectionner un item par défaut... [:noxauror]


Message édité par cosmoschtroumpf le 06-06-2008 à 11:51:37

---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1742464
kazzz
Posté le 06-06-2008 à 13:14:43  profilanswer
 

ben t'assignes un comboboxitem a selecteditem

n°1742476
Koyomi
Posté le 06-06-2008 à 13:21:53  profilanswer
 

J'ai l'habitude d'utiliser cette classe pour gerer les item de mes comboBox :

 
Code :
  1. public class KeyItem<T>
  2.    {
  3.        #region MEMBERS
  4.        private T m_Key;
  5.        private string m_value;
  6.        #endregion
  7.  
  8.        #region CONTRUCTOR
  9.        public KeyItem(T key, string value)
  10.        {
  11.            m_Key = key;
  12.            m_value = value;
  13.        }
  14.        #endregion
  15.  
  16.        #region PROPERTIES
  17.        public T Key
  18.        {
  19.            get { return m_Key; }
  20.            set { m_Key = value; }
  21.        }
  22.  
  23.        public string Value
  24.        {
  25.            get { return m_value; }
  26.            set { m_value = value; }
  27.        }
  28.        #endregion
  29.  
  30.        #region PUBLIC
  31.        //-----------------------------------------------------------------------
  32.        public override bool Equals(object obj)
  33.        {
  34.            if (!(obj is KeyItem<T> ))
  35.                return false;
  36.  
  37.            if (((KeyItem<T> )obj).Key.Equals(this.Key) && ((KeyItem<T> )obj).Value == this.Value)
  38.                return true;
  39.  
  40.            return base.Equals(obj);
  41.        }
  42.        //-----------------------------------------------------------------------
  43.        public override string ToString()
  44.        {
  45.            return this.Value;
  46.        }
  47.        //-----------------------------------------------------------------------
  48.        public override int GetHashCode()
  49.        {
  50.            return base.GetHashCode();
  51.        }
  52.        #endregion
  53.  
  54.    }
 

et ensuite pour selectionner un item par défaut => Propriete SelectedItem / SelectedIndex

 


EDIT : Grillaid :(


Message édité par Koyomi le 06-06-2008 à 13:23:51
n°1742521
cosmoschtr​oumpf
dawa powered
Posté le 06-06-2008 à 14:26:30  profilanswer
 

kazzz a écrit :

ben t'assignes un comboboxitem a selecteditem


oui ça d'accord, mais c'est comment déterminer quel comboboxitem doit être sélectionné :o
 
Du coup en fait j'ai fait une collection de comboboxitems, que je remplis lors du chargement des données, et que j'affiche sur le combobox lors de l'affichage des données. Et pour sélectionner une valeur par défaut (lors de l'édition), je parcours tous les éléments de mon combobox, et si il y en a un qui correspond, je le met en tant que selecteditem.
 
J'ai bon, ou c'est horrible ?
 
 
 
Je suis sûr que si je postais tout mon code, vous pleureriez des larmes de sang [:dawao]


Message édité par cosmoschtroumpf le 06-06-2008 à 14:26:58

---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1742526
___alt
Posté le 06-06-2008 à 14:33:24  profilanswer
 

Bah tu fais un cast de selecteditem avec le type d'objets que t'as dans ta liste et ça te donne directement ton objet.


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°1742528
cosmoschtr​oumpf
dawa powered
Posté le 06-06-2008 à 14:36:07  profilanswer
 

oui non mais ça d'accord :D
 
ce que je veux dire, c'est que, au chargement de la page, je ne vois pas d'autre solution que de faire ça :
 

Code :
  1. foreach (ComboBoxItemCommission c in comboBoxCommission.Items)
  2. {
  3.     if (c.Id == (int)drevenement["commission_id"])
  4.     {
  5.          comboBoxCommission.SelectedItem = c;
  6.     }
  7. }


 
pour sélectionner par défaut une certaine commission :o


Message édité par cosmoschtroumpf le 06-06-2008 à 14:37:02

---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
n°1742533
___alt
Posté le 06-06-2008 à 14:41:06  profilanswer
 

Ah oui ok [:tinostar]


---------------
TRIPS RIGHT BUNCH F SHUTTLE TOM AND JERRY RIGHT YELLOW
n°1742539
Koyomi
Posté le 06-06-2008 à 14:49:03  profilanswer
 

tu ne peut pas selectionner ton element pendant le chargement de ta combo ?
 
genre :
 
foreach(Item i in maListe)
{
   ComboBoxItem item = combo1.Items.Add(i);
   if(i.Id = monId)
      combo1.SelectedItem = item;
   
}
 
??

n°1742542
cosmoschtr​oumpf
dawa powered
Posté le 06-06-2008 à 14:51:06  profilanswer
 

Koyomi a écrit :

tu ne peut pas selectionner ton element pendant le chargement de ta combo ?


si, c'est vrai, mais j'ai une méthode qui récupère les données et une autre qui les affiche, j'avais voulu les laisser séparées :o

 

bon, de toute façon c'est sans doute pas la meilleure méthode, mais au moins ça marche, je progresse :D


Message édité par cosmoschtroumpf le 06-06-2008 à 14:51:18

---------------
Android/Manettes/Metroidvania/Zelda/Indés/Retrogaming/VDS jeux
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Permettre une sélection vide dans un combobox databound

 

Sujets relatifs
ColorChooser dans ComboBoxVBA Excel - selection de valeurs distinctes
[C#] IDataReader vide après un ExecuteReader()[Résolu] Newbie - requêtes SQL de sélection et boucle
Liaison choix dans combobox et texte dans textboxsuppression de dossier non vide - [ActivePerl]
Problèe avec une requête de sélection[XHTML] Début en XHTML, page despérément vide
[Ajax] Script bloqué sous IE avec balise XML videascenseur popur combobox dans jsp avec struts
Plus de sujets relatifs à : Permettre une sélection vide dans un combobox databound


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)