systemic_anomaly
Messages postés59Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention 1 août 2005
-
26 mai 2005 à 12:50
systemic_anomaly
Messages postés59Date d'inscriptionvendredi 16 janvier 2004StatutMembreDernière intervention 1 août 2005
-
27 mai 2005 à 14:15
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 !
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 26 mai 2005 à 13:11
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.
[javascript:void(0)
]
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
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 !
jesusonline
Messages postés6814Date d'inscriptiondimanche 15 décembre 2002StatutMembreDernière intervention13 octobre 201029 26 mai 2005 à 20:31
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
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...
<ToolboxData("<{0}:MultiDrop runat=""server""></{0}:MultiDrop>")> Public Class MultiDrop
Inherits System.Web.UI.WebControls.ListBox
Private _Title As String
_
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("
")
output.Write("[ " & _Title & " ]")
MyBase.Render(output)
output.Write("
")
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 ;-)