begin process at 2012 05 27 20:07:41
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive ASP & ASP.NET

 > 

Archives ASP & ASP.NET

 > 

AU SECOURS !!!!

 > 

Dropdownlist multi-sélectionnable


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Dropdownlist multi-sélectionnable

jeudi 26 mai 2005 à 12:50:10 | Dropdownlist multi-sélectionnable

systemic_anomaly


Bonjour tt le monde,

J'aimerais disposer d'une dropdownlist multi-sélectionnable. On pourrait donc sélectionner plusieurs items dans cette dropdown. Il semblerait que ce contrôle n'offre pas cette possibilité. J'ai alors pensé à faire une listbox mais, pour des raisons d'affichage, cette liste doit se résumer à une ligne (comme le look d'une dropdown). Ce qui, au final, n'est pas très pratique (et pas franchement esthétique).

Donc, si qqun connait un contrôle de substitution que je ne connaitrais pas ou qui aurait développé son propre contrôle répondant à mes critères (et qui soit surtout facilement implémentable car le temps joue contre moi...) je serais preneur !

Merci d'avance


jeudi 26 mai 2005 à 13:11:47 | Re : Dropdownlist multi-sélectionnable

jesusonline

Membre Club Administrateur CodeS-SourceS
Malheureusement ce n'est pas possible en HTML de faire ce que tu veux, donc il faut passer par du javascript.

Mon idée sur la question :) est d'utiliser le composant CheckBoxList (je me rappelle plus du nom, ni meme de son existence en .net 1). puis de faire un peu de js & co pour avoir ce que tu veux.

Donc créer un nouveau UserControl (c'est ce qu'il y a de plus simple) puis tu met dedans le code suivant.

<div>
<a href="javascript:void(0)" onclick="javascript:afficher()" id="titre" runat="server" />
<div id="list" style="display:none">
<asp:CheckBoxList blablabla />
</div>
</div>

puis du js

function afficher()
{
   document.getElementById("list").style.display = "block";
}

puis dans le code behind de cet UC, tu mets quelques properties interressante qui te renvoie titre.text etc.. pour que tu puisses l'avoir ou tu veux :-)

Le code javascript & co, c'est un peu "au pif" il faudra bien sur l'améliorer, va donc voir sur javascriptfr.com

Le mieux serait bien sur d'utiliser les controles Composites : [ Lien ]


Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
jeudi 26 mai 2005 à 18:40:15 | Re : Dropdownlist multi-sélectionnable

Nurgle

Membre Club Administrateur CodeS-SourceS
jesusonline --> CheckBoxList existe bien en .net 1 (et oui le .net 1 existe encore...)

Sinon si tu veux te lancer dans les contrôles composites vas-y, mais c'est se compliquer la vie pour pas grand chose.

avec une CheckBoxList ou une ListBox ça devrait suffire... (les deux permettent une selection multiple)


Nurgle
C'est une grande folie que de vouloir être sage tout seul !
jeudi 26 mai 2005 à 18:47:54 | Re : Dropdownlist multi-sélectionnable

Nurgle

Membre Club Administrateur CodeS-SourceS
et j'ai faillit oublier une grosse dose de bidouillage en javascript (le plus dure en somme)
--> javascriptfr

où voir même l'ajax (voir la superbe source de jesusonline) pour recharger uniquement le composant, enregistrer sur le serveur ce qu'il a choisit puis le laisser choisir autre chose s'il a envi !

Nurgle
C'est une grande folie que de vouloir être sage tout seul !
jeudi 26 mai 2005 à 20:31:38 | Re : Dropdownlist multi-sélectionnable

jesusonline

Membre Club Administrateur CodeS-SourceS
Les controles composites c'est bien non ? et puis c'est tellement simple d'emploi ;-)

Je suis d'accord avec Nurgle, que ma solution est peut etre un peu excessive, mais au moins si tu as deux endroits à faire ceci, ben tu te refarciras pas l'implementation deux fois :p

En tout cas ca m'a peut etre donnée une idée, ce soir avant de m'endormir, un petit controle Composite en .net 2 pour faire suite aux splendides articles de TKfé : http://blogs.developpeur.org/tkfe/archive/2005/05/25/6952.aspx

Pour la solution du clientCallBack et de ma "super source" pour l'utiliser il faut etre en .net 2 et non avec ce vieil ;) asp.net 1.1 donc dans un projet classique (autre que notre folie sur CS) il vaut mieux attendre une version finale, pour l'instant ca va bien pour s'entrainer, pour apprendre etc...


Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
vendredi 27 mai 2005 à 09:04:10 | Re : Dropdownlist multi-sélectionnable

systemic_anomaly


Merci à vous deux pour vos explications mais malheureusement ça ne m'aide pas.

Les contrôles composites me plaisaient bien mais cela prend du temps qui comme je l'ai déjà dit me manque cruellement .

Je vais me faire haïr par la communauté des défenseurs du Javascript mais moi le Javascript c'est pas ma tasse de thé .

Merci encore.



vendredi 27 mai 2005 à 09:46:41 | Re : Dropdownlist multi-sélectionnable

jesusonline

Membre Club Administrateur CodeS-SourceS
Ben la t'as pas bien le choix :-/

Tu peux pas faire ce que tu veux en HTML pure, donc il faut obligatoirement passer par javascript + CSS ...

j'ai pas eu le temps hier soir d'y regarder :( mais je vais quand meme essayer de faire un truc rapide aujourdhui, si bien sur ca t'interesse ;)


Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
vendredi 27 mai 2005 à 10:11:13 | Re : Dropdownlist multi-sélectionnable

systemic_anomaly


Bien sûr que ça m'intéresse tjs.

Merci bcp pour l'attention que tu porte à mon problème.

vendredi 27 mai 2005 à 12:27:07 | Re : Dropdownlist multi-sélectionnable

jesusonline

Membre Club Administrateur CodeS-SourceS
Je viens d'avoir une vingtaine de minute :)

Donc voici ce que j'ai fait.

Bien sur c'est pas joli etc... reste une grande partie de présentation & co, mais bon le principal y est :)

Imports System.ComponentModel
Imports System.Web.UI

<ToolboxData("<{0}:MultiDrop runat=""server""></{0}:MultiDrop>")> Public Class MultiDrop
    Inherits System.Web.UI.WebControls.ListBox

    Private _Title As String
    <Bindable(True), Description("Text pour du lien pour afficher le truc")> _
    Public Property Title() As String
        Get
            Return _Title
        End Get
        Set(ByVal value As String)
            _Title = value
        End Set
    End Property
    Protected Overrides Sub AddAttributesToRender(ByVal writer As System.Web.UI.HtmlTextWriter)
        MyBase.Attributes.Add("style", "display:none;")
        MyBase.AddAttributesToRender(writer)
    End Sub
    Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)
        output.Write("<div>")
        output.Write("<a href=""javascript:void(0)"" onclick=""javascript:Show('" & Me.ClientID & "')"">" & _Title & " </a>")
        MyBase.Render(output)
        output.Write("</div>")
    End Sub

    Private Sub MultiDrop_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Me.Page.IsClientScriptBlockRegistered("MultiDrop") Then
            Dim script As String = "<script type=""text/javascript""> " & vbNewLine & _
                                    " function Show(id) " & vbNewLine & _
                                    "{" & vbNewLine & _
                                    "   var elmt=document.getElementById(id);" & vbNewLine & _
                                    "   if (elmt.style.display == 'block')" & vbNewLine & _
                                    "   {" & vbNewLine & _
                                    "       elmt.style.display= 'none';" & vbNewLine & _
                                    "   }" & vbNewLine & _
                                    "   else" & vbNewLine & _
                                    "   {" & vbNewLine & _
                                    "       elmt.style.display= 'block';" & vbNewLine & _
                                    "   }" & vbNewLine & _
                                    "}" & vbNewLine & _
                                    "</script>"
            Me.Page.RegisterClientScriptBlock("MultiDrop", script)
        End If
    End Sub
End Class

J'ai pas utilisé de techniques de .net 2 donc j'ai ecrit le fichier js "à l'ancienne" et non dans une webressource :) si j'ai le temps, je pousserais un peu plus loin le rendu du controle, mais je pense que ca pourrait bien te depanner ;-)




Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr
vendredi 27 mai 2005 à 13:41:02 | Re : Dropdownlist multi-sélectionnable

jesusonline

Membre Club Administrateur CodeS-SourceS
Avec un rendu un peu plus correct voila ce que ca donne
ExempleMultiDrop.jpg
Le code CSS utilisé :

.MultiDrop a {
color:Black;
text-decoration: none;
background-color:#FAFAFA;
padding:0px 15px 0px 5px;
background-position:center right;
background-repeat:no-repeat;
background-image: url(/Cyril/images/expand-closed.gif);
}

le code du controle :

Imports System.ComponentModel

Imports System.Web.UI

<ToolboxData("<{0}:MultiDrop runat=""server""></{0}:MultiDrop>")> Public Class MultiDrop

Inherits System.Web.UI.WebControls.ListBox

Private _Title As String

<Bindable(True), Description("Text pour du lien pour afficher le truc")> _

Public Property Title() As String

Get

Return _Title

End Get

Set(ByVal value As String)

_Title = value

End Set

End Property

Protected Overrides Sub AddAttributesToRender(ByVal writer As System.Web.UI.HtmlTextWriter)

MyBase.Attributes.Add("style", "display:none;position:relative;")

MyBase.AddAttributesToRender(writer)

End Sub

Protected Overrides Sub Render(ByVal output As System.Web.UI.HtmlTextWriter)

output.Write("<span style=""position:absolute"" class=""MultiDrop"">")

output.Write("<a href=""javascript:void(0)"" onclick=""javascript:Show('" & Me.ClientID & "',this)"">" & _Title & " </a>")

MyBase.Render(output)

output.Write("</span>")

End Sub

Private Sub MultiDrop_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

If Not Me.Page.IsClientScriptBlockRegistered("MultiDrop") Then

Dim script As String = "<script type=""text/javascript""> " & vbNewLine & _

" function Show(id, lien){" & vbNarrow & _

" var elmt=document.getElementById(id);" & vbNewLine & _

" if (elmt.style.display == 'block'){elmt.style.display = 'none';lien.style.backgroundImage = 'url(/Cyril/images/expand-closed.gif)';}" & vbNewLine & _

" else{elmt.style.display = 'block';lien.style.backgroundImage = 'url(/Cyril/images/expand-open.gif)';}" & vbNewLine & _

" }" & vbNewLine & _

"</script>"

Me.Page.RegisterClientScriptBlock("MultiDrop", script)

End If

End Sub

End
Class

Et pour info le code aspx qui n'est ni plus ni moins que celui d'une listBox

Veuillez selectionner une ville :
<cc1:MultiDrop ID="MultiDrop1" runat="server" SelectionMode="Multiple" title="Ville">
   <asp:ListItem>Lyon</asp:ListItem>
   <asp:ListItem>Paris</asp:ListItem>
   <asp:ListItem>Lille</asp:ListItem>
   <asp:ListItem>Marseille</asp:ListItem>
</cc1:MultiDrop>

J'espere qu'avec tout ca, ton problème sera résolu ;-) Au début, je voulais pas partir sur la base d'une listbox, car on peut pas customisé avec css l'interieur d'une listebox, mais c'est tellement plus simple :-)


Cyril - MCP ASP.net
Webmaster de : Hoshimi.CodeS-SourceS.fr

1 2

Cette discussion est classée dans : contrôle, multi, dropdownlist, dropdown, sélectionnable


Répondre à ce message

Sujets en rapport avec ce message

problème dropdownlist [ par lenneth666 ] Voila alors j 'ai une datagrid. Dan sune colonne je veut que lorsque l'on passe en mode édition, un label laisse place a une dropdownlist.Et qd je cli ListBox et couleurs ! [ par yous ] Comment fait on pour mettre des couleurs de fond dans un ListBox ou DropDownList ?Ici (Sur CodesSources), lorsque l'on conçoit un message, on a la pos DropDownList ajout d'evenement [ par waldpest ] Bonjour à tous, Voila mon problème, J'ai une dropdownlist mais je ne veux rien mettre dedans je veux tout simplement que lorsque qu'on clic dessus m [ASP.NET] Site multi-langues [ par neofenix ] Bonjour a tous, Je sais que Visual Studio permet, à partir des fichiers resx, de réaliser un site multi-langues. Je souhaitais savoir si une fois que récupérer la valeur d'un contrôle [ par mezianiomar ] Bonjour, Comment récupérer par exemple le texte d'un "TextBoxe" affiché dynamiquement sur une page. NB: le texte est saisie après que la page est char dropdownlist changement de valeur [ par electika ] Bonjour, Je programme en ASP.NET + C# et j'ai un petit problème: illustration: http://www.imagup.com/pics/1271468875.html Je souhaite faire un ajou dropdownlist + datasource [ par zoot06 ] C'est idiot mais je trouve pas de solution. J'ai une dropdownlist que je veux coupler avec des champs d'une base de données. Je me suis qu'en mode de Transformer un label en DropDownList [ par jeffwow ] Bonjour. Ma demande est assez particulière je sais. J'aimerais que lorsqu'on clique sur un label, celui-ci se transforme en Dropdownlist (en ajax, remplir une dropdownlist [ par yassinozi ] bonjour tout le monde quelqu'un peut m'aider svp,je viens de commencer un projet fin d'année en asp.net et j'ai trouvé quelque deffeculté par exemple Erreur de script sur contrôle de validation [ par dublow ] Bonjour, J'ai crée une master page, un contrôle utilisateur et j'ai 2 pages contenu. Sur le contrôle utilisateur, j'ai une fonction qui masque/affic


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales