




Если вам это действительно нужно, одна из идей - создать собственный ListBox класс, HTML которого выглядит так: устанавливает ширину SELECT к ширине самого широкого значения (максимальная ширина полосы прокрутки, Например). Теперь оберните этот SELECT внутри DIV ограниченного size и дайте ему прокрутиться при переполнении.
Вот быстрый пример, начиная с этих строк, вот тип 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>
поэтому, по сути, я бы рекомендовал создать составной настраиваемый элемент управления для this, который отображает этот HTML. Их довольно легко сделать, Google в термины «составной элемент управления asp.net».
Самая сложная часть - сопоставление размеров div с размерами выберите поле, чтобы полосы прокрутки работали / выстраивались правильно. Поэтому это довольно сложно.
Также взгляните на это: Автоматическое добавление / скрытие горизонтальной полосы прокрутки в элементе управления ListBox
РЕДАКТИРОВАТЬ: убедитесь, что у вас достаточно высоты, чтобы включить высоту полосы прокрутки, иначе вы получите вертикальную полосу прокрутки на обоих элементах управления.
Мы можем поместить этот список в DIV и установить стиль для DIV на переполнение, который при необходимости будет автоматически отображать полосу прокрутки.
На вашей странице aspx есть следующий DIV:
<div id='hello' style = "Z-INDEX: 102; LEFT: 13px; OVERFLOW:
auto; WIDTH: 247px; POSITION: absolute; TOP: 62px; HEIGHT: 134px" >
Поместите свой asp: listbox в определение 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
Мне нравится, как вы усвоили другой ответ!
Пример добавления горизонтальной прокрутки:
<asp:ListBox ID = "List" runat = "server" Height = "320px" Width = "100%" style = "overflow-x:auto;"SelectionMode = "Multiple">
</asp:ListBox>
CSS3 overflow-x Свойство: http://www.w3schools.com/cssref/css3_pr_overflow-x.asp
Если вы делаете это только для отображения, вы можете сделать это по-другому, используя текстовое поле со свойством mulitiline. Добавляя текст с новой строки как таковой!
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";
}
Следовательно, вы получите представление многострочного текстового поля со всеми вашими данными, расположенными в хорошем формате, как в приведенном выше коде (новая строка и все). А также он будет переносить ваши тексты, если они превышают ширину вашего текстового поля. Также вам не нужно беспокоиться о полосах прокрутки, и здесь вы получите только вертикальную полосу прокрутки, поскольку все наши результаты были обернуты в соответствии с поведением текстового поля.
Попробуйте следующее решение: stackoverflow.com/a/22863151/717267 Ура!