Добавьте горизонтальную прокрутку к элементу управления списком asp.net - PullRequest
2 голосов
/ 05 сентября 2008

Как добавить возможности горизонтальной прокрутки в элемент управления списком asp.net?

Ответы [ 4 ]

3 голосов
/ 08 апреля 2015

Пример добавления горизонтальной прокрутки:

<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

1 голос
/ 05 сентября 2008

Мы можем поместить этот список в 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

1 голос
/ 05 сентября 2008

Если вам это действительно нужно, одной из идей будет создание Класс 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>

по сути, я бы порекомендовал создать составной пользовательский элемент управления для this, который отображает этот HTML. Их довольно легко сделать, Google на Термины «композитный контроль asp.net».

Самая трудная часть будет соответствовать размерам div с установите флажок, чтобы полосы прокрутки работали / выравнивались правильно. Вот почему это немного сложно.

Источник

Также обратите внимание на следующее: Автоматическое добавление / скрытие горизонтальной полосы прокрутки в элементе управления ListBox

РЕДАКТИРОВАТЬ : убедитесь, что у вас достаточно высоты, чтобы включить высоту полосы прокрутки, иначе вы получите вертикальную полосу прокрутки на обоих элементах управления.

0 голосов
/ 26 июня 2015

Если вы делаете это только для цели отображения, вы можете сделать это другим способом, используя 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";
    }

Таким образом, вы получите представление многострочного текстового поля со всеми вашими данными, расположенными в хорошем формате, как в приведенном выше коде (новая строка и все). А также он обернет ваши тексты, если он превысил ширину вашего текстового поля. Также вам не нужно беспокоиться о полосах прокрутки, и здесь вы получите только вертикальную полосу прокрутки, так как все наши результаты были перенесены в соответствии с поведением текстового поля.

...