35 votes

Liste déroulante à sélection multiple en ASP.NET

Existe-t-il une bonne liste déroulante multi-sélection avec des cases à cocher (webcontrol) pour asp.net ?

Merci beaucoup.

37voto

knut Points 2265

Vous pourriez utiliser le [System.Web.UI.WebControls.CheckBoxList](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.checkboxlist.aspx) contrôler ou utiliser le [System.Web.UI.WebControls.ListBox](http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listbox.aspx) avec le SelectionMode la propriété est réglée sur Multiple .

3 votes

J'ai utilisé CheckBoxList et TextBox. Je les affiche et les cache avec javascript et un positionnement absolu.

2 votes

@Jan Remunda pouvez-vous donner le détail du javascript pour cela ? Je vous en serais reconnaissant !

27voto

Aleris Points 4674

Liste de contrôle jQuery Dropdown peut être utilisé pour transformer un élément html ordinaire à sélection multiple en une liste déroulante de cases à cocher. Il fonctionne sur le client et peut donc être utilisé avec n'importe quelle technologie côté serveur :

alt text
(source : <a href="http://dropdown-check-list.googlecode.com/svn/trunk/doc/demo.png" rel="nofollow noreferrer">googlecode.com </a>)

1 votes

Je pense que cette solution est exactement ce que la question demandait ! Une alternative très solide !

5 votes

Mais en C# codebehind, comment accéder à la liste cochée ? Avec la réponse acceptée, nous pouvons utiliser foreach(ListItem li in listBox1.Items){if(li.Selected){myList.Add(listItem.Text) ; } }. }

6voto

smax Points 191

Essayez ce contrôle serveur qui hérite directement de CheckBoxList (gratuit, open source) : http://dropdowncheckboxes.codeplex.com/

3voto

Mick Bruno Points 184

J'ai utilisé le contrôle open source à http://dropdowncheckboxes.codeplex.com/ et j'en suis très satisfait. Mon ajout visait à permettre à une liste de fichiers cochés d'utiliser uniquement les noms de fichiers au lieu des chemins d'accès complets si la légende "selected" devient trop longue. Mon ajout est appelé à la place de UpdateSelection dans votre gestionnaire de postback :

// Update the caption assuming that the items are files<br/> 
// If the caption is too long, eliminate paths from file names<br/> 
public void UpdateSelectionFiles(int maxChars) {
  StringBuilder full = new StringBuilder(); 
  StringBuilder shorter = new StringBuilder();
  foreach (ListItem item in Items) { 
    if (item.Selected) { 
      full.AppendFormat("{0}; ", item.Text);
      shorter.AppendFormat("{0}; ", new FileInfo(item.Text).Name);
    } 
  } 
  if (full.Length == 0) Texts.SelectBoxCaption = "Select...";
  else if (full.Length <= maxChars) Texts.SelectBoxCaption = full.ToString(); 
  else Texts.SelectBoxCaption = shorter.ToString();
}

1voto

Jason Coyne Points 3593

HTML ne prend pas en charge une liste déroulante avec des cases à cocher. Vous pouvez avoir une liste déroulante ou une liste de cases à cocher. Vous pouvez éventuellement simuler une liste déroulante avec cases à cocher en utilisant du javascript et en masquant les divs, mais cela serait moins fiable qu'une liste de cases à cocher standard.

Il existe bien sûr des contrôles tiers qui ressemblent à une liste de cases à cocher déroulantes, mais ils utilisent les astuces des divisions.

vous pouvez également utiliser une double boîte de liste, qui gère la sélection multiple en déplaçant les éléments d'une liste à l'autre. Cette méthode présente l'avantage supplémentaire de permettre de voir tous les éléments sélectionnés en même temps, même si la liste des éléments totaux est longue.

(Imaginez une liste de toutes les villes du monde, avec seulement la première et la dernière sélectionnées).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X