Как добавить возможности горизонтальной прокрутки в элемент управления списка asp.net?
Добавить горизонтальную прокрутку в элемент управления списка asp.net
Ответы (4)
Пример добавления горизонтальной прокрутки:
<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
Мы можем поместить этот список в 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
Если вам это действительно очень нужно, одной из идей было бы создать собственный класс 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. Их довольно легко сделать, Google на условиях «композитный контроль asp.net».
Самой сложной частью будет сопоставление размеров div с размерами поля выбора, чтобы полосы прокрутки работали/выстраивались правильно. Вот почему это довольно сложно.
Также взгляните на это: Автоматическое добавление/скрытие полосы горизонтальной прокрутки в элементе управления ListBox< /а>
EDIT: убедитесь, что у вас достаточно высоты, чтобы включить высоту полосы прокрутки, иначе вы получите вертикальную полосу прокрутки на обоих элементах управления.
Если вы делаете это только для отображения, вы можете сделать это по-другому, используя Textbox со свойством 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";
}
Следовательно, вы получите представление многострочного текстового поля со всеми вашими данными, расположенными в хорошем формате, как указано выше (новая строка и все). А также он будет переносить ваши тексты, если он превышает ширину вашего текстового поля. Также вам не нужно беспокоиться о полосах прокрутки, и здесь вы получите только вертикальную полосу прокрутки, поскольку все наши результаты были обернуты в соответствии с поведением текстового поля.