2008-09-05 10 views

Répondre

1

Si vous avez vraiment, vraiment besoin, une idée serait de créer une coutume classe ListeDéroulante dont le HTML ressemble à ceci: définit la largeur du SELECT à celle de la largeur de votre valeur la plus large (la largeur maximale de la barre de défilement , par exemple). Maintenant, enveloppez ce SELECT à l'intérieur d'un DIV de la taille «contrainte» et laissez-le défiler sur débordement.

Voici un exemple rapide à partir vers le bas ces lignes, voici le type de HTML que vous voulez cracher par un contrôle:

<div style="width:200px; height:100px; overflow:auto;"> 
<SELECT size="4"> 
<OPTION 
Value="1">blahblahblahblahblahblahblahblahblahblah blahblah</OPTION> 
<OPTION Value="2">2</OPTION> 
<OPTION Value="3">3</OPTION> 
<OPTION Value="4">4</OPTION> 
</SELECT> 
</div> 

donc, en substance, je vous recommande la création d'un contrôle composite personnalisé pour cela, ce qui rend ce HTML. Ils sont assez faciles à faire, Google sur les termes «contrôle composite asp.net».

La partie la plus difficile fera correspondre les dimensions div à celles de la boîte de sélection , pour que les barres de défilement fonctionnent correctement. C'est pourquoi c'est un peu compliqué.

Source

Aussi, jetez un oeil à ceci: Automatically Adding/Hide Horizontal Scroll bar in the ListBox control

EDIT: Assurez-vous que vous avez suffisamment de hauteur pour inclure la hauteur de la barre de défilement ou bien vous aurez la barre de défilement verticale sur les contrôles.

1

Nous pouvons placer cette zone de liste dans un DIV et définir le style de DIV à déborder, ce qui affichera automatiquement la barre de défilement si nécessaire.

Votre page ASPX a la DIV suivante:

<div id='hello' style="Z-INDEX: 102; LEFT: 13px; OVERFLOW: 
      auto; WIDTH: 247px; POSITION: absolute; TOP: 62px; HEIGHT: 134px" > 

Mettez votre asp: ListBox dans la définition DIV. Dans la fonction page_load, vous devez définir correctement la largeur et la hauteur de la zone de liste afin qu'elle ne déborde pas avec le DIV.

private void Page_Load(object sender, System.EventArgs e) 
{ 
    if (!IsPostBack) 
    { 

     int nItem = Convert.ToInt32(ListBox1.Items.Count * 17); 
     ListBox1.Height = nItem; 

     ListBox1.Width = 800; 

    } 
} 

Code et solution disponible à http://www.codeproject.com/KB/custom-controls/HorizontalListBox.aspx

+0

J'aime la façon dont vous avez assimilé une autre réponse! –

0

Si vous le faites uniquement à des fins d'affichage , Vous pouvez le faire d'une autre manière en utilisant Textbox avec la propriété mulitiline. En ajoutant le texte avec une nouvelle ligne en tant que telle!

List<Yourclass> result = null; 
    result = Objname.getResult(Parameter1, Parameter2); 
    foreach (Yourclass res in result) 
    { 
     txtBoxUser.Text += res.Fieldname1.ToString(); 
     txtBoxUser.Text += "\r\n" + res.Fieldname2.ToString(); 
     txtBoxUser.Text += "\n\n"; 
    } 

Par conséquent, vous obtiendrez la vue de mulitline avec textbox Toutes vos données disposées en bon format que code ci-dessus (Nouvelle ligne et tout). Et aussi il encapsulera vos textes s'il dépassait la largeur de votre zone de texte. Aussi vous n'avez pas besoin de vous embêter avec les barres de défilement et ici vous obtiendrez seulement la barre de défilement verticale puisque tous nos résultats ont été enveloppés selon le comportement de la zone de texte.

Questions connexes