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

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


person kjv    schedule 05.09.2008    source источник
comment
Попробуйте следующее решение: stackoverflow.com/a/22863151/717267 Ура!   -  person Eduardo Cuomo    schedule 04.04.2014


Ответы (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

person Vinicius    schedule 08.04.2015

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

person Codeslayer    schedule 05.09.2008
comment
Мне нравится, как вы усвоили другой ответ! - person Michael Eakins; 31.05.2012

Если вам это действительно очень нужно, одной из идей было бы создать собственный класс 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: убедитесь, что у вас достаточно высоты, чтобы включить высоту полосы прокрутки, иначе вы получите вертикальную полосу прокрутки на обоих элементах управления.

person Espo    schedule 05.09.2008

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

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

person Padmanaban    schedule 26.06.2015