2008-09-05 67 views

回答

1

如果你真的需要它,一个想法是创建一个自定义的ListBox类,它的HTML如下所示:将SELECT 的宽度设置为最宽值的宽度(滚动条的最大宽度,例如 )。现在将这个SELECT包裹在'约束'的DIV中,让它在溢出时滚动。

这里有一个简单的例子开始直到这些线路,这里有你想要通过控制吐出 HTML类型:

<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> 

所以在本质上,我建议创建复合自定义控制 此,呈现这个HTML。他们很容易制作,谷歌在 条款'复合控制asp.net'。

最困难的部分将匹配div尺寸与 选择框的尺寸,以使滚动条正常工作/排列。这就是为什么 它有点棘手。

Source

而且,看看这个:Automatically Adding/Hide Horizontal Scroll bar in the ListBox control

编辑:请确保您有足够的高度,包括滚动条的高度,否则你会得到两个垂直滚动条控制。

1

我们可以把这个列表框放在一个DIV中,并为DIV设置溢出的样式,它会在需要时自动显示滚动条。

你的aspx页面具有以下DIV:

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

把你的asp:列表框的DIV定义中。在page_load函数中,您需要正确定义列表框的宽度和高度,以便它不会与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; 

    } 
} 

代码,并在http://www.codeproject.com/KB/custom-controls/HorizontalListBox.aspx

+0

我喜欢你同化另一个答案的方式! – 2012-05-31 15:27:17

0

如果仅用于显示目的,这样做,您可以通过使用带有mulitiline属性的Textbox以另一种方式来完成此操作。通过追加文本与新行这样!

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"; 
    } 

因此,你会得到mulitline文本框的布置良好的格式,上面的代码(新行和所有)的所有数据视图。如果它超出了文本框的宽度,它也会包装你的文本。你也不需要为滚动条而烦恼,在这里你只会得到垂直滚动条,因为我们所有的结果都是按照文本框的行为来包装的。