Permettre une sélection vide dans un combobox databound - C#/.NET managed - Programmation
Marsh Posté le 05-06-2008 à 14:54:29
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 ?
Marsh Posté le 05-06-2008 à 15:22:32
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.
Marsh Posté le 05-06-2008 à 15:34:09
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 :
|
Marsh Posté le 05-06-2008 à 15:36:36
Chez Harkonnen, ça ne coûte pas plus cher de bien coder
Marsh Posté le 05-06-2008 à 15:53:30
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
Marsh Posté le 05-06-2008 à 15:57:27
Mais t'es complètement demeuré mon pauvre
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
Marsh Posté le 05-06-2008 à 16:03:19
___alt a écrit : Mais t'es complètement demeuré mon pauvre |
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
sorry
Marsh Posté le 05-06-2008 à 16:04:31
Ah bah non pour le coup
Ca m'apprendra à faire des blagues sur des topics sérieux
Marsh Posté le 05-06-2008 à 16:09:58
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 :
|
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 ?
Marsh Posté le 05-06-2008 à 16:10:27
non non c'est ma faute, j'ai qu'à regarder la télé plus souvent, je connaitrais la pub flunch
Marsh Posté le 05-06-2008 à 16:14:54
et arrêtez de vous fighter sur mon topic ou j'appelle la modération
Marsh Posté le 05-06-2008 à 16:31:24
Marsh Posté le 05-06-2008 à 16:39:30
cosmoschtroumpf a écrit : ok, mais dans ce cas, comment je fais pour récupérer l'id ? |
REPONDEZ A LA QUESTION §§§ /FOU/
Marsh Posté le 05-06-2008 à 17:05:14
cosmoschtroumpf a écrit : |
poste voir une capture d'écran d'un combo ASP stp, je les connais pas et je sais pas la gueule qu'ils ont
Marsh Posté le 05-06-2008 à 17:13:55
cosmoschtroumpf a écrit : |
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()
Marsh Posté le 05-06-2008 à 17:24:30
<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é.
Marsh Posté le 05-06-2008 à 17:27:18
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
Marsh Posté le 05-06-2008 à 17:38:23
ouai un truc comme ça et tu recuperes le selecteditem (selectedvalue et selectedtext ça reste a null)
Code :
|
Marsh Posté le 05-06-2008 à 18:31:40
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 (pas encore implémenté mais je ne doute pas que ça marchera aussi )
merci
Marsh Posté le 06-06-2008 à 11:51:00
bon et maintenant, si je veux sélectionner un item par défaut...
Marsh Posté le 06-06-2008 à 13:14:43
ReplyMarsh Posté le 06-06-2008 à 13:21:53
J'ai l'habitude d'utiliser cette classe pour gerer les item de mes comboBox :
Code :
|
et ensuite pour selectionner un item par défaut => Propriete SelectedItem / SelectedIndex
EDIT : Grillaid
Marsh Posté le 06-06-2008 à 14:26:30
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é
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
Marsh Posté le 06-06-2008 à 14:33:24
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.
Marsh Posté le 06-06-2008 à 14:36:07
oui non mais ça d'accord
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 :
|
pour sélectionner par défaut une certaine commission
Marsh Posté le 06-06-2008 à 14:41:06
Ah oui ok
Marsh Posté le 06-06-2008 à 14:49:03
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;
}
??
Marsh Posté le 06-06-2008 à 14:51:06
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
bon, de toute façon c'est sans doute pas la meilleure méthode, mais au moins ça marche, je progresse
Marsh Posté le 05-06-2008 à 14:50:05
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